Skip to main content

Full text of "Web Designer Magazine 2012 Full Complete Year"

See other formats


Special guest editor 

MattMullenweg 


The king of CSS speaks 

Eric Meyer 



/ * 



“Flash is dead, 
so let’s build a 
better internet” 

Patrick Van Kann, R/GA 


PLUS 

30+ pages of 
pro tutorials 

Soleil Noir 
Pro File special 

Over 10 hours 
of video tutorials 



















# heart interne 


Create your own custom 





vCPU HDD 



RAM 


Fully scalable and customisable 

Your VPS specs can be modified on the 
fly to ensure you can meet any sudden 
changes in demand or popularity. 


VPS without compromises 

Affordable yet high-quality VPS hosting 
without compromise. We use branded 
Intel processors and Dell servers in our 
UK data centre* 


Advanced virtualisation technology 

KVM is the latest generation of virtualisation 
technology, offering high-performance 
access to server resources for both Linux and 
Windows virtual private servers. 


From only £11.99 per month 


✓ 24/7 UK Support 


✓ Free & Instant Setup 


✓ 99.99% Uptime SLA 


✓ Full root access 


Find out more: www.heartintemet.co.uk 
Call us: 0845 644 7750 


# heart internet 

www.heartinternet.co. uk 

web hasting I Reseller hasting I VP$ I Servers 


Jh. 









<nu>Ui> 



— Guest editor- — 

Welcome 
to200! 


M To be the most accessible and | V f 
inspiring voice for the industry, ' / 1 

I offering cutting-edge features 
L and techniques vital to 

building future-proof Matt 

online comon; #» Mullenweg 


welcome | 


The web is a first-class development platform 


i: eb Designer magazine started in 
1997 when the hot topics were 
searching with AltaVista, Dynamic 
HTML, and HotWired WebMonkev 
was hand-coded with bbEdit. I was in 
middle school, 200 issues later, an 
impressive teat tor any publication, 
and the names and the technologies 
have changed, but the passion that designers and 
developers have tor creating the web as a craft is the 
same (and WebMonkev now uses Word Press), 

Today the web has become a first-class development 
platform. Forget about nudging single-pixel GIFs and 
abusing tables - that's in the past - today you can build 
an app with open-source tools and there are almost a 
billion people a dick away. There's never been anything 
like that in the history of our species, but what are you 
going to do with it? 

With great power comes great responsibility, 
especially fortesting. Vou'il notice a 'good chunk of the 
carefully-assembled 200 must-have tools starting on 
page £4 are either dedicated to testing your creation. 


like Firebug and Browsershots, or libraries and services 
that normalise cross-platform differences like Twitter 
Bootstrap, Typekit, jQuery, and Modernizr. I'm honoured 
to be included in the list with WordPress, as well as 
being the guest editor for this issue. 

Although there's much more to be excited about this 
issue, I have to mention the five questions with Enc 
Meyer starting on page 42. This is a special delight for 
me because Eric fond his css-discuss list) were my first 
introductions to modern web design. I had read 
Zeldman's Taking Your Talent to the Web and started to 
dabble, but still struggled with CSS layouts. I posted a 
question to css-discuss one hot August day from 
Houston, and within a few hours Mr Meyer himself had 
replied - helping me bottorn-align an image in a block 
element, thereby setting off a chain of events that led to 
me being passionate about web standards, meeting Eric 
atSXSW about a year later, and starting Word Press. I 
don’t think I've said it before, so: thank you. Eric. It's a 
story to keep in mind next time you find yourself 
helping someone with a tech-related issue... 

Matt Mullenweg 



Highlight 



iiifi We 
mustn’t put 
our eggs in one 
basket with 
one software 
solution M 

Web Designer takes 
the short hop over the 
Er^hsh Channel to 
Paris to talk to French 
web architects Soleil 
tor They reveal a love 
of Flash and coffee., 
and how they keep 
their oeaLfve integrity 
by not doing sales 
strategies. Page 36 


f f Today you can build an app with open-source tools m™ over to the contents to 

, ., discoverwhat’s going to get 

and there are almost a billion people just a click away w w you excited mis issue 

Follow us on Twitter for all the news & conversation 3 @WebDesignerMag 
Visit our blog for opinion, freebies & more© www.webdesignermag.co.uk 


meta 


3 


































































| contributors 


This issue’s panel of experts 


Welcome to that 
bit of the mag 
where we learn 
more about the 
featured writers 
and contributors. 


G4 An exclusive 
insight to the past, 
present and future 
of WordPress 



The WordPress ra-faunder not only takes the helm as guest editor far our 
special 200th issue but he also gives us an exclusive insight to the past 
present and future of WordPress. To top it all off he recommends a host of 
WordPress tools and themes plus his favourite third-party apps, Page 20 



Sam Hampton-Smith Louis Lazaris Louis Simoneau 



Sam loves getting the most 
out of HTML and CSS. Thts 
month he creates a 
real time fmend-finder app. 
m pert one of lib tutor ial he 
uses H T ML5"s gedocattcn 
API tcMjah share and 
update your position utsing 
QpenStreetMaQ Page 6-B 



Louis writes regularly for a 
number of top design blogs, 
including his own site 
Impressive Webs. In this 
issue's lead feature he 
I unveils a collection erf some 
I of the best tools on the web- 


that every designer needs in 
their arsenal. Page 44 



Louis slings Ruby on Rails 
for Flippy, and hosts the 
SitePc«nt podcast, This issue 
he has a dose-up look at Git 
and GltHub. He reveals how 
version control works and 
why designers need to be 
fully aware of these two 

very popular tools Page a? 


Matt Giffo rd Marks huf f lebottom Ben Fraln 


J — I Matt Gifford is a lead RlA 
B. consular*developer and 
H industry author, who 
B specialises in ColdFusion. 

C Flash and AIR development, 
mis month he 

■ demonstrates how to build 
a URL shortener with Ruby 
and Smatra. Page 88 



Mark ShLtf lebdttom is the 
programme leader cf BA 
(Hons) Digital Media Design 
at Bournemouth University; 
in this issue he tackles the 
an of creating an interactive 
3D navigation system using 
the JavaScript rendering API 
WebGL. Page 54 



Ben Frain is a freelance 
front-end developer and 
tech writer. He is also the 
author of 'Responsive wab- 
-jcsign with HTML5 £ CSS3'. 
This issue he tells us how to 
serve hi-res images to high 
defin<ion displays such as 
the new 1 Pad. FageSfl 


Tliord Daniel Hederigren Pete Simmons 



Known as TDH Tor short. 
Thcrd is an author and 
freelance fOurnaHsLas well 
as a huge succcuter of 
coen source software. He 
ha* writ ten several books 
on WordPress and runs the 
Odd Alice wefc agency in 
Stockholm. Page 65 



Pete is a digital marketing 
manager for Llcnhead 
Studios. He specialises in 
fr-oht end development, PUP 
and social APIs. This mcnih 
Pete tackles the Facebook 
Graph APi and shows how 
to integrate images and 
data Into a website. Page 92 


4 


meta 



Got 
web skills? 


We’re always looking for the d 
hottest web-design talent. Email ^ 

^ webdesiqnenBimaqin e-pub lishinq.co.uk 

with examples of your creative work 


O 


i 

L 



Imagine Publishing LJtd J 
Richmond House, 33 Richmond Hill 
Bournemouth, Dorset, BH2 6EZ 


+44 (0)1202 5B620Q 
Web: www. imaeme-publ iahing.co.uk 
www,webdesianenriag.CQ. uk 

www,gr&atdigita lmags.com 


Magazine team 

Editor Russell Barnes 

russeii.barne5igimaglne-i)wt>ilshinfl.cQ.vh 

Q12Q2 69B272 

Editor In Chief Dave Harfield 
Features Editor Steve Jenkins 

steftrE.ienktnsffinTagjne-publishingjCQ.uk 

01202 SS6233 

Designer Daniel Duke 

Senior Sub Editor Adam Mill ward 

Sub Editor Ben Martin 

Head of Publishing Aaron Asadi 

Head of Design Ross Andrews 

Contributors 

Mail Gifford, Sam Ha Wlo# Smith, Thord D Hedcn£ren, 
Dttvid Howell, Robin De Jorgh. Louis L&cSris, Vicky MtFSrlans, 
M&LL Mullerrwefi. Jake RuLLer. Mark Shutnebir.Jom, 

Feie Simmons, Louis Smoneau & Adam Smith 
Advertising 

Digr.al or printed nredia packs are available on request. 
Head of Sales Hang Derecz 
01202 580442 

hilnf .rl+iTil/PinWinri mihliiihinF.nn.i ik 

Athertfalng Manager George Lutes 
01202586421 

awrAe.lurjwjgliiiaftirifipiiilishiiTfl.m.uk 

5e n I or Account Manager Nick Marrow 
01202 53S419 

nick.marrpwffitrTagine-puhlishintljCQ-uk 

Cover disc 

Head of DigiM Mat l^r 

Digital Prefects Co-Hwdinsrtw Steven yitcht 

Multimedia &*Hcw Matt Deeble 

WDximhd pgimafiine publishirig.co.uk 

Internationa] 

Web Destgnetr is available for licensing. Contact the 
In-en-ia-jonal department to discuss opportunities. 

Mead inf International Licensing Carthy Blackman 
+44 <ori 1202 5864Q1 
licensinegimagine ptblishine.ou.uk 

Subscriptions 

Head at Subscriptions Lucy Nash 

suhscnptionsSimagiftepublishing.co.uk 

To orders subscription _ .a Web Designer 
0844 84S&413 144 1795 592 STB 

Email: - webdesignerffiservicghalpli ne.co.uk 
13-issue subscription (UK) -£62.30 
13-issue subscription (Europe! - £70 
13"iSSue SubSCripti« (ROW) £80 
Circulation 

Head uf Circulatiun Dar ren Pearce 
01202 5R&2CX1 

Production 

Production Director jane Haiwkins 
U- 01202 586200 
Founders 

GhuCp Managing Director Damian Butt 

Grntlp Finance A Cummtrc ial Directulr Sreven Enyd 

GrtiUp Creative Director Mark Kendrick 

Printing & Distribution 

primed by Wyndeliam Ke«otn, LW. BetifaDs Comjstfeac, 

Colchester Road, Heybridge, Maldon, Essex CM9 4NW 

Distributed in the UK tit Eire by Seymour Distribution. 2 East 
Poultry Avenue, London, |C1 A 9PT 0207 429 4000 

Distributed In Australia tty Gordon ft fioreh. Equinox 
Centre, 18 Rodborough Road, Frenchs Forest. NSW 2086 
612 9973 fifiOD 

Eristnbuted In Rest o1 the World try Marketfarce, Blue 
Rn Building. 110 Southwark S-jee:. London SE1 OSU 
D2tril48BlB6 

Disclaimer 

I he piJdl sl-ercannct accept resin until tv tar any unsolicited material 
Intf a rtar-vjgcd m flag post. All mid layout Is tit mfr g}r. nr 

inetnePutUiib^jo. H«hitign;iii! -■ lyodueet) 

in whoia or pan wtftout Uw wrttim pwawsioii of tie pUtilWrw, 

Ail capiiTfitr.s ere rrccfiTi aed and used specfitel^ Tuf Uie purpose 
uf cr^jcism atd nevieM. AJUnoug.h the ma^az re has endaoiTcred 
to o-iwiip n I In tom In n It ciirroet at :lmn at print, pr kcs. utkI 
^aiebittjfnifljfchan*e Ttisi-naozinaialUbkrteperHlamarKli 
ttU.dlftlidljet) riant nuv wilt the couponrsneriLtmed Iterert. 


H Itriigl*R.fciFJ-iift 1 tdI' 

3SWW73534 

|||] 

PPA 

U H (^recyd 

le 


IMAGiM ■ 

PUBLISHING 


WH*v y&r twrr* Firiihad »>*l 




































HP recommends Windows® 7 Professional. 



Introducing the new HP Z1 Workstation. 
Power without the tower. 


The all-in-one HP Z1 Workstation with the Intel® Xeon® processor 
E3-1200 series. 



To find out more about the HP Z1 Workstation visit 

hpxo.uk/Z1 or coll 0645 


$2012 Hewlett-Packard Development Company, l,P- The Information contained he*ein is subject to change without notice. 

Intel, Intel logo Intel Intel Inside, logo, Intel Inside, Neon and Xecn Inside are trademarks of Intel Corporation in the United States, and other countries, 
Microsoft and Windows ore trademarks of the companies Microsoft. 






<meUi> 


Inside issue 200 


contents 

Cutting-edge features, techniques and inspiration for web creatives 


Chat with the team and other readers and discuss the latest tech, trends and techniques. Here's how to stay in touch... 

O webdesianer@imaaine-publishina.co.uk Q@WebDesianerMaa C> www.webdesianermaa.co.uk 


Insider.. - 

20 Interview: Matt Mullenweg 

The WordPress co-founder and issue 200 
guest editor shares his vision of the future 

26 Lightbox 

Three sites that make the web a better place 
including work from Hello Monday 

32 Design diary: Firstborn 

This month's design diary sees us riding the 
development cycle of 'experience Sony' 

36 Pro File: Soleil Noir 

This month we spend time with French 
creative giants Soleil Noir 

42 Interview: Eric Meyer 

We snatch five questions with the king of CSS! 

44 Coven 200 tools & trends 

What are the most important tools in web 
design today? Our experts reveal theirs 

96 Portfolio 

Three more rising stars in the web world 

104 Hosting listings 

Check out the latest domain-based deals 

114 Style relic; Vimeo 

How has Vimeo changed since 2004? 


<lieack*r> 


Discussing the hottest topics 
from the web-design world 

8 15 years and counting! 

Take a journey through the evolution and 
revolution of web design 

14 Crowdsource 

We respond to your latest letters and tweets 

16 Comment: Beniamin Boiko 

Does abstraction kill curiosity? Big Spaceship 
technologist, Bojko, seems to think so 

17 Comment: Devin Silberfein 

2Advanced CEO Silberfein on getting the most 
out of working with nightmare clients 

18 Comment: Patrick Van Kann 

Once director of engineering at the Walt Disney 
Company, Van Kann explores life after Flash 



Cover focus 



Matt Mullenweg speaks 

Exclusive interview with the WordPress co-founder 



l 'he go to expert tor Cbb on what the l mure holds 


Pro File; Soleil Noir 

Behind the scenes with the French creative giant 


6 


meta 







































On the free CDs I <tutorials> 


112 Discover what your special issue discs have to offer 

A comprehensive collection 
of free designer resources! 

• 10+ hours of pro video tutorials 

• 200 essential tools & trends 

• 20 WordPress themes 

• 10 cheat sheets & much more! 



54 

I Get interactive with WebGL 


kJJJ.ldU.Cl DOCUMENTATION 
CONTRIBUTE 
CODE 
CREW 
ABOUT 


Put this in 

your pipe "yK'Jk,. 


and smoke it ! r-T" - *' 'Tl. —. 



88 58 

Build a bespoke brand Are vou retma-readv? 

Add a U RL shortner to your repertoire Serve hi res images to your audience 


Web workshop 


74 Get creative with 
CSS transitions 
Mark Shuffle bottom 
u ses Julienrenvoye.com to 
demonstrate how clean, 
Flash-like transitions can be 
achieved in CSS 


76 Mainstream 
banner styles 
Adam Smith looks at one of the 
most important aspects of any 
web project, the banner, using 
some classic examples 



Web gurus take you step-by-step 
through professional techniques 

54 Create an interactive 3D interface 
with WebGL 

Harness the power of the hardware accelerated, native 
3D graphics engine for browsers 

58 Serve images to high-res screens 

Take advantage of HD and Retina display screens to 
make your site a cut above the rest 

62 Make tabbed boxes with multiple 
loops for Word Press 

Add a tabbed box with content from ser veral categories to 
your Wordpress theme 

68 Build an HTML5friend-finding app: 
parti 

Learn bow to capitalise on geolocation technology with 
the first part of our new series 


r (UJ8b- 

{developen 

Dedicated 14-page section offering 
features and tutorials for coders 



i 


Feature 

A crash course in Git 

Get to grips with GibHub. the ultimate collaboration 
tool for all kinds of developers 


88 Build a URL shortner 

Make an Impact with your brand with your own 
bespoke URLs 

92 An introduction to the 
Facebook Graph API 

Howto access the data behind Facebook and 
integrate it Into your web projects 


meta 




























news 
comment 
crowd source 




header 


Discussiiig the hottest topics in the web-design world 

If you have a creative project new web product or great designer story contact the editorial desk 

O webdesiqner@imaqine-publishinq.co.uk 0@WebDesiqnerMaq 


15 years and 
counting 

Web Designer first hit the shelves 
in 1997 when the web was a very 
different place. Here we take a 
journey through the evolution 
and revolution of web design 


i .JIBU » jvt— 1 

ISSUE 153 


ONSALE 2009 



wL, 


— 1 




ON SALE 2006 


2 00issues. 15 years and millions of lovingly crafted words. Tne lifespan of a 
magazine seldom reaches such a substantial figure, but Web Designer has 
undoubtedly achieved a significant milestone. And along the way there have 
been some seism £ changes in web design across the board. 

The world's first website is credited to Tim Berners-Lee, boasting the URL http:// 
irfo.cernxh. So back in December 1990, the internet had a population of one. By the 
end of 1991 the figure had risen to ten; at the dose of 1992 it had reached 50, and a 
year later it had hit 623. Figures started to take a much bigger jump over the next 
couple of years. Indeed, by the end of 1994. websites 
had reached five figures, with just over 10.000. By 
tiie beginning of 1996 another milestone was 
reached as the 100,000 mark was passed. The 
growth in the intervening years has been massive - 
indeed, in less than ten years the web went from 
100,000 to around 100 million, and in the last five 
years from 100 million to over half a billion. 

Along the way technologies, techniques and 
trends have made huge strides in bringing the web 
to where it is today HTM15. CSS3 and jQuery are the 
current ruling triumvirate of web design, but back in 
1997 when Web Designer took its first steps into the 
market, things were a little different... 

HTML has always been the major building block, 
but it was a different beast when HTML3 launched In 
1995. HTML3 soon became HTML4 in 1997 and 
introduced a host of tags and recommendations that 
many have grown up with. The logical progression was HTMLS.and almost ten years 
later a working draft was introduced. Semantic tags and a whole new set of APIs 
have made HTML more powerful than ever - and it's not even finished yet 




HTML's now constant companion - CSS - hasn't always been by its side. Page 
styling was once dominated by tables and nested tables, inline styling. Flash 
animation and a very small collection of system fonts. Even frames and framesets 
were popular, but looking back it's hard to think why. Building pages was a painful 

enough experience, and updating often proved even 
more irritating. If animation was needed. DHTTMl and 
Flash were the folks to call on. The lack of font 
support meant that graphics were still the key 
component for creating headline-grabbing text. 

Thankfully. CSS revolutionised web design and 
unleased the power of stylesheets. CSS had a 
plethora of plus-points, but as always browser 
support made sure that it would take a while to gam 
traction, The introduction of CSS3 has seen designers 
say goodbye to the old and hello to a new and much 
more powerful version of the styling language, one 
that is only now starting to fulfil its potential. 

The new specifications, along with jQuery. have 
slowly pushed Flash to the wayside, Mobile is now as 
important - if not more important - than the desktops 
indeed, mobile operating systems and tablet screens 
are now all part of the mix. making the current field of 
web design and development - as well as the future - an incredibly exciting place to 
be. And. of course. Web Designer will be there to guide newcomers, enthusiasts and 
the experienced alike along the way. Here's to the next 200 issues! 


8 


header 








































<lieaclei> 


Find news and feature items at@www.webdesignermag.co.uk 



Battle of the browsers 

Back in 2008. in Europe it was a straight fight between Internet Explorer and Firefox. IE 
was still top dog with Firefox the hot. up-and-coming contender. Opera and Safari were 
on an even keel. 

Chrome was just 
a baby and 
SeaMonkey 
(nemennber that?) 
was making up 
the numbers. 

How times 
changes 

Source: 

g 55 lsteounijer.com 


The rise of the website 


There are over half a billion registered 
names for websites, so potentially over 
half a billion websites. However, not 
every name is active. Active sites make 
up typ leally 25 or so per cent of tih e 
registered total. December 2011 saw 
555 million websites, but only around 
170 million were active, for example. 
Source: v\ ww.pingdor n.ccr n 



SSSmMlta 

234million; 


IS7 million 

Dec 2008 Dec 2009 Dec 2010 Dec 2011 

]I _ 1 _I 



Dotcom still number one 


There are nearly 100 million com 
domain names registered in the world 
- a rise of almost 20 million in just three 
years. Its hard to believe that so many 
exist, but it does explain why it s so 
hard to get one! 

Source: wwwamdomjram 


S5£mLULaj* 

81.8 rallticKTj^ *-*■'"’** 


Dec 2008 Dec 2009 Dec 2010 Dec 2011 

I_I_I_I 



COMMENT 

Russell Barnes 

Editor 

< yl I made the decision to work In computing and 
technology from a relatively young age, while the 
Internet was in its infancy. My thinking was simple - our 

will the career opportunities. It's proved to be the only 
sensible decision I’ve ever made. The industry as a whole is 

young, dynamic and bursting with creative vision and in no 

other area Is this more true than In Web design. What the 

next 200 issues holds in terms of new web technologies is 

anyone's guess, but that's what brought me here in @@ 

the first place -1 can’t wait to find out. 



COMMENT 

Steven Jenkins 

Features Editor 

£ £ 2 00 Issues Is an impr essive feat, and while I haven't 
worked on every issue. Fm proud to sav I have been 
associated with the magazine for nearly half of them. 
Imagine Publishing bought the rights to the Web Designer 
brand in 2005, and the mag has gone from strength to 
strength. Looking back it's staggering how far the web and 

web design have come in those few years. Flicking through a 

copy of 116 brings a wry smile Lo my face: Lhe technologies 
have advanced beyond recog n ition, and design in general is 
far more sophisticated. It does make me wonder where we 
willbe in another five or ten years: HTML6, CSS7, 
Dreamweaver 25. Firefox 1QQ? Whatever happens. I @@ 
am really looking for ward to the future. 


|j|n| Web Designer posed the question: What year did you build your first website and does it still exist?' 
Here's a few of the replies from our dedicated band of followers... 

@duskwebdesign 
@WebDesignerMag 1998 , and no it 

@changinghorizon 
@WebDesignerMag Can't 

@create_oblivion 

@WebDesignerMag 2001, my first 

doesn’t. Was for a blind users org 1 

remember the year, but were 

portfolio site built with nested tables 

built for my final-year uni project. 

still proud of this one: 

and a hideous Flash splash page! 

They've disbanded so site long gone 

http://woo de nf r u its. co m 

Thankfully it no longer exists 

©seanlangweb 

@WebDesignerMag First website 

@WeAreWebDesign 
@WebDesignerMag 2007 

@FotoLuna 

@WebDesignerMag My first 

that went online was 2007 and sadly 

and, painfully, yes ; it looks 

website 1993. Doesn't exist any 

it doesn't still exist because my 

embarrassingly awful 

more - don’t even have it backed 

hosting went down i 

now though! 

up unfortunately 


header 








































































<lieader> 


| raws Discussing the hottest topics in the web design world 


Stay at home designers 

Is it time to make the switch to remote and home working? The facts show that 
businesses and individuals could both reap the rewards on offer 


D esign, by its very nature, is a 
profession that is typically 
performed In front of a screen 
with the designer sat at a desk. This 
scenario is the norm for agencies and 
offices across the globe. 

The same scenario is one that can be 
applied to homes around the world. It is 
almost inevitable that most designers will 
have a very similar setup at home. An 
internet connection is almost guaranteed, a 
copy of the latest CS suite (or preferred 
tools) and a comfy chai r wi II all make the 
grade. With all the necessary assets in place 
the next question is. 'why don't more of us 
work from home?' Is it the iack of intelligent 
company? The isolation of a home office? 


Or is it that we simply cannot be trusted? On 
a more positive note. travel times will be 
immediately negated, overheads could be 
reduced, and more flexibility introduced to 
working practices, 

Remote or home working is hot a new 
scenario, but one that is gaining more 
ground as technology bridges the gap 
between the office and home. The recently 
departed Olympics were a great example of 
the practice in action. 

The government advised London-based 
businesses to consider flexible working, it 
seems that their words were heeded. with 
around a third of businesses encouraging 
flexible working during the supposed 
Greatest Show on Earth™. 


Cloud computing is one technology that 
helps bridge the gap between home and 
office. Andrew Gilbert. MD of cloud solution 
specialists Node4 said, '"Cloud computing 
removes the need for executives to 
physically travel to their offices to meet with 
each other face-to-face, thus offering a 
perfect solution to businesses to ensure 
smooth operations.' 

This is just one face of home working, it 
also has a host of other benefits, as Gary 
David Smith of Prism Total IT Solutions 
pointed out, 'Home working is more 
productive, greener and can save 
companies money.' 

For those who don't believe that workers 
will be as productive, the figures say 


otherwise. British Telecom - one of the 
pioneers of home working in Britain - has 
15.000 home workers among its 92,000 
staff. They report that they have found 
home workers 20 per cent more productive 
than office based staff, less likely to take 
days off due to illness, and save the 
company about £6.000 each every year in 
business expenses. 

Taking a slight sidestep, a report from 
online employment specialists Elance 
reveals record-breaking growth in online 
work, with earnings and job opportunities 
far outpacing the traditional employment 
economy. It seems there are plenty of 
pluses for working at home and online, so 
why Isnt it happening on a big scale? 


Great digital mags 

Visit greatdiRitalmafi s.com to get Web Designer on 
your favourite digital platform 

Web Designer, the premier magazine for aspiring online creatives has teamed up with 
Zinio, the leading digital publisher, to offer more options for getting your favourite 
magazine delivered in the formats you want to read. 

Imagine Publishing's new partnership with Zinio 
means that Web Designer is now available for PC, 

Mac. iPad. iPhone Android. Blackberry and Web OS. 

This means that wherever you are, you can get the 
latest cutting-edge practical projects, features, 
interviews and inspirational design showcases at 
your fingertips. 

Zinio provides the apps (db-zmioicomfepps/ 
indexjsp) reeded to get the best on-screen reading 
experience, while Web Designer provides the 
unmissable content 


20 0 

less. » 


Who delivers the fastest 
CDN for jQuery? 

Choosing the right content delivery network can 
ensure best performance 

A report from Pingdorn Cbit .lv/NLFhfE3 has revealed that the most commonly used, and 
free, hosts of jQuery - Google. Microsoft, and Media Temple - have proved reliable, but 
with inconsistent performance. 

To evaluate the networks, Pingdorn performed tests from multiple locations across 
Europe and North America, once per minute, around the dock, over 30 days. The 
results found that all three offered excellent availability, but that wasn't the case for 
performance. For sites that don't use HTTPS or secure servers, Media Temple was by far 
the fastest. Google came a close second in Europe but lagged behind in North America. 
For HTTPS sites Google was the fastest in Europe, with Google and Microsoft similar in 
North America. Finally. Microsoft was 
deemed the worst performer in 
Europe, but on a par with Google in 
North America overall. 


ife jQuerv 

* write leaf, do more. 


<news <:loud> 

Bite-sized coverage of the month’s trending topics 


PhoneGap ssssT Mountain Lion 

. r reaches 
T versSon2 


Smartphones users lack security G' ^ - 

YouGov research. com miss c oed by sea. rily p mvicc C M 

smaripnones 

grabbing a smartphone rather than going to the 
desktop when visiting the web. 78 per cent of 
respondents choose the smartphone compared with ft 

57 per cent who chose their desktop. More * Client-side stack to change theface of 

wonyingly, only 19 per cent had protection installed M front-end development 
on their phones. 


W3C announces 
four new editors to 
replace Ian Hickson 


Yeoman iPad mini 


• Will we really beableto get our mitts on a mini 
iPad in September? 


Mountain Lion 
for Windows 

Not exactly, but software developer 
PARAGON Software Group has 
released NTFS for Mac OS X 1C 1 . This 
is a standalone Mac OS X 10.3 
-compatible application that allows 
for dual-boot users to access 
Windows partitions via an Apple 
Mac. With the software installed 
users will be able to create, delete or 
modify files as desired. 


10 


header 



















WIN A 5TB LIVEDRIVE 
ACCOUNT FOR A YEAR 



YOU COULD WINONEOFIO 
LIVEDRIVE PRO SUITE ACCOUNTS 
WORTH £150 EACH! 


L ivedrive helps creatives 
around the world back 
up their most precious 
files in confidence. Giving 
artists peace of mind with an 
incredible offering that protects 
files, the Livedrive Pro Suite account 
enables users to sync files between 
computers, access them anywhere 
through the cloud, while sharing 
content with colleagues and clients 
if needed. And all of this can be 
done without inducing any technical 
headaches: simply back up files to 
the doud and restore them at any 
time with just a single click, 


Whether you use a Mac or a PC, it 
works just like any other drive; drag 
and drop your files between your 
favourite apps and let Livedrive sync 
the files online between all of your 
computers for you, What's more, it's 
fast With industry-leading systems 
and software. Livedrive is quick, 
efficient and your upload/download 
speeds are never limited - you won't 
even know it's there! Visit www. 

I ivedrive.com/forhome/DrQsu ite t o 

find out more information. 

For a chance to win one of ten 
Pro Suite accounts, simply enter the 
competition by 19 September 2012 


WHATKTHELIVEDRIVE PROSUITE? 

• Pro Suite combines all Livedrive's features in one easy-to-use package 

• It gives you unlimited backup for up to five computers 

• A massive 5TB online syncing drive allows you to access files anywhere 

• The package even enables you to share with those not using Livedrive 

• FTP, SFTP and WebDAV access to Briefcase is available if needed 

• Apps for iPhone and Android mean you can stream files to your mobile 

• All data is stored securely in Livedrive's UK data centres 


HOW TO ENTER: 

For a chance to win one of ten Livedrive Pro Suite accounts worth 
L1SO each answer the simple question below. Send your answer to 
webdesigner@imagine-pubLi5hing.CQ.uk - subject 'Livedrive comp' 



How much storage does Livedrive’s 
Pro Suite account offer? 

A: 100 megabytes B: 512 gigabytes C: 5 terabytes 


TERMS & CONDITIONS Imagine Publishing and Its partners have the right to substitute the prize for a similar Item 
of equal or higher value. Employees of Imagine Publishing. Livedrive, their relatives or any agents are not eligible to enter. The editor's 
decision is final and no correspondence will be entered into. Prizes cannot be exchanged for cash. From time to time. Imagine Publishing 
or its agents may send you related material or special offers If you do not wanL to receive this, please state so clearly in your competition 
entry. All entrants agree to participate in any promotion related to this competition. The competition closes 19 September 2012. 


Competition 















&ni§(&ja 






Hosted 

technology, 

minus the headaches 

innW.TOMORRfflH MHlfUl® 


Whether you’re starting from scratch or a tech wizard, unreliable technology, 
limited product choice and a lack of support are all headaches you could do without. 

Fasthosts has been delivering industry-leading technologies, for thousan ds 
of customers just like you for over 13 years. With wholly-owned and managed 
secure UK data centres, dedicated 24/7 support and a team of experts, 

Fasthosts are always here, supporting you every step of the way. 


For help and advice call us now on QBOQ 6520 444 

Working with Fasthosts is smooth, from choosing a domain name 
or hosting and managing your website the process is simple . 

The support services are excellent and communication superb! 
i highly recommend Fasthosts to my clients and connections. 
Jules Thomas The Last Hurdle 

www thpl^hnr/fS/r rn uk 




Value for money 4 , 




\ v "x 


You’re our priority 

today, tomorrow and the future 


WEB HOSTING ■ DOMAINS ■ EMAIL ■ DEDICATED SERVERS ■ VIRTUAL SERVERS ■ RESELLER HOSTING 


fasthosts 


Making business work better online 


fasthosts.co.uk 

or call 0800 6520 444 





<h«aclei> 


crowd source 







Crowd 

source 

% to 6 



Your emails, tweets, forum comments. The social network, but in print 

This month we discuss Word Press security, the importance of web fonts, and how best to train as a designer or developer 


subject Sticky disc 


From Ken Toll 


I've been reading the mag for about four or five years, and a 
subscriber for about the past three. Over that time, while the 
magazine has got even better, the mounting of the free disc has got 
worse. I really hate to mutilate a magazine, just to get the disc! 

With the earlier clear plastic sleeves, I could remove the disc, and 
try and gently peel off the sleeve. The sleeve would be intact and 
usually I had an even's chance of not damaging the mag - unless 
they used a slightly different adhesive. 

Now with the card sleeves, I can't even get the sleeve off 
undamaged, let alone the Mag. Please can someone investigate the 
disc mount - and come up with a viable solution, or give us a URL to 
get the disc content from... 


Web Designer likes to keep its readers happy so 

your comment has been passed on to __ 

the relevant department. One 
solution is to keep the disc in 
the sleeve, simply take out 
disc when first received, 
copy the content to the 
desktop and pop it back , 
in the sleeve. Then 
when you want to use 
any of the content, install 
from the saved location. 


V. 


subject Fonts and PHP, 
do you agree? 

From Rog^rio Marques 


WebKit 

Discover the kit 
needed to help 
create inspirational 
and interactive web 
pages 



WordPress Backup 
toDropbox 

wpb2d.ccnn 



v\V' Vl ’Ki>Phl£S 


I realty liked your articles about 
fonts and PHP in issue 198 but 
somehow I felt compelled to write 
to you about just t hat 
The font revolution is maturing, 
we all know that, but everyone 
seems so excited about all this fuss 
that they seem to forget about 
print fonts (yeah I know that 
display fonts can be printed. I'll get 
there...) I believe it's time to start 
writing more about fonts that are 
used on paper, specifically those 
that allow us to reduce our costs 


Remember that saving a little 
here and there multiplied by 
several prints Is a lot, and In these 
times of contention can be a very 
good feature on any website that 
needs print reports 
In reading the article about PHP 
tips, there's the mention that 'PHP 
has Its problems, but then again, 
so do all languages' - and white I 
couldn't agree more, I just wanted 
to give my point of view as a 
computer programmer: it's not the 
language that defines the good or 
buggy program, its often the 
coder. I’ve programmed with a lot 
of languages (BASIC. Pascal. Turbo 
C & C++ Clipper. COBOL Visual 


oblivion and some are used 
according to what’s fashionable... 
But they all do have something 
called best practices, and these 
are Lo be used; these exist for a 
reason and they too evolve, so we 
coders need always be learning 
and evolving. 

Does anyone remember the 
GOTO command? Anyone? 

Let's start by saying we are very 
happy that you like the 
magazine. We have to say that 
there are some great points 
raised. What do Web Designer 
readers think? Let us know if 
you agree or disagree. 


Face book for WordPress 

deVel0Der5.racebQ0k.com/ 

wgrdprjss 



Redesign the Web 
bit.ly/qJSdvc 


and be economic. 

Although we have all these 
portable devices connected, there 
is stiB a need for printed reports, 
invoices and so on. 5o what about 
an article on those fonts that only 
print on the border, not filling 
inside (or similar) allowing Lo 
preserve the ink and the printer (or 
other similar techniques! 


FoxPro, Visual Basic. VBScript 
HTML, Java, JavaScript, ASR VBA, 
VB.NET, Delphi, CSS, PHRand 
each of them has their own pros 
and cons, some are better suited 
for Jobs than others and some are 
all rounders, but they all evolve 
through time. Some were 
forgotten and might rise again 
later, others seem to fall into 


Using Accordion 
for content 


From Douglas Toavs 


Do you know of any examples of 
using the JQuery accordion 
method to lay out extensive, 
in-depth content? Eg the 
equivalent of 13 pages of print 


It’s not the language that defines the good or 
huggy program, its often the coder tl 


14 


header 
























Join the conversation as it happens on Twitter 0 @WebDesignerMag 
Comment on the news and opinion @ www.webdesjgnermag.co.uk 
Email the editorial team at Q webdesigner@iniatdne-Dubllshlng.co.uk 


content placed in die accordion method subject In search of a great 

with ten subheads? Were considering this search function? 

method of avoiding layers of con tent and l ? r om Cliff Barragry 

would like to see it in use. ——-———--- 


The accordion method is an interesting 
option for displaying a lot of content* 
The BBC Sport site uses it to great 
effect, espec ially inthes ideba r. 
However, this doesn't display masses of 
content. Take a look at this site - bit.ly/ 
QewSjd - for an i mag inati ve way to 
display lots of content. Alternatively, 
take a look at this clever use of the 
accordion - biUv/fk3qzN. 

subject Thanks for the 
inspiration 

From Earl Varotia 


Hi I'm a big fan of your magazine and it 
really Inspired me to be creative in 
designing and developing for the web. So 
thank you, and please keep inspiring us. 
My portfolio site I just made, inspired by 
you ww w.ea rlva rona.co m 


lama huge fan of Web Designer. Great 
tutorials, I am currently doing a project in 
Word Press and I require a search form with 
multiple options, like a filtered search. This 
all seems very straightforward but I can't 
for the life of me find a tutorial or a plug-in 
that will do what I want. This is killing me as 
I have a limited PHP knowledge. Have you 
guys done a tutorial on this kind of thing? 
Or could you point me in the right 
direction? Any help you can give would be 
much appreciated. 

There are thousands of WordPress 
pi ug ■ i ns ava i la ble on t he ma rket. but 
finding the right one to fit your needs is 
not always that easy. Unfortunately, we 
do not have a tutorial to match your 
request, though we will definitely keep it 
in mind for a future issue, A plug-in worth 
checking out is the Multiple Category 
Selection Widget wordpress.org/ 
extend/plug in s/multi pie-category- 

selection -widget. This allows for 
multiple dropdown lists to narrow down 
a search and make the terms more 
specific. Alternatively, try this option at 
matt hewaprice.co m/searc h- mu Itip le- 

cuslomJlelds-i n- wordp ress. This allows 
the user to add different keywords to 
help filter a search, 

i# There are 
thousands of 
WordPress plug¬ 
ins on the 
market but 
finding the right 
is not always 
that easy §• 


Web Designer is here to inspire and help, 
and we love the portfolio site. 




Comments from 
the Blog 

• Web Designer is always 
keen to hear from its 
readers, followers and 
visitors. Here we bring together 
a specially selected collection 
from the last month 


©RMolletje 

©WebDesignerMag fm a 
loyal subscriber for over 3 
years now and do not like 
that <webkit> has been 
flushed. Why? Furthermore: 
great magi 

©thejamiefraser 
Who needs breakfast tv 
when you have the latest 
©WebOesigner Mag mag to 
read! (Breakfast is cold now 
though!) 

©create oblivion 
Unwinding after a hard 
week of finishing off works 
new website, time for some 
tutorials courtesy of @ 
WebDesignerMag #199 
which one first? 

©DesineCornwall 
Reclined on the sofa, 
enjoying the latest issue of 
©WebDesignerMag. 
Perfect, 

©deucecreative 
For lunch today I II be 
chomping through the 
latest ©webdesignermag 
- it's looking pretty tasty to 

©Mullins Daniel 
©WebDesignerMag still 
awake, still trying <tutorials>; 
thanks for t gr8 mag 
Icoding #webdesign #html 







header 


15 






























emotional and immersive , . _ .< 

experiences, For more BfilljElIIllJl J30] KQ 


information, visit www. 
bi^spaceshipcom 


Are HTML shortcuts damaging to your creativity? 


A s a child, calculator watches fascinated me. Third-grade 
swag factor aside, I marvelled at the idea of fooling my 
teachers into thinking 1 was a fashionable math ace. 
They would never know of my devious plan to secretly let a machine 
solve my exam questions, Unfortunately, I never had the money to 
buy one and by the time I did,, we were allowed to use calculators 
anyway In the end, not only did I have to learn to read time off that 
analog watch I got for my birthday, but I also had to take the hard 
route and learn how to add, subtract, multiply and divide. 

I often imagine what could have been if I had used a calculator 
from first grade. I would have blasted through exams as if they were 
a silly chore. Ultimately, I would have been stuck with entering in 
digits and generating abstract results in return. Would I have ever 
grasped the potential of what I could actually do with analysis, 
trigonometry and the like? I might never have realised that I can 
solve anything from the navigation systems used In satellites 
orbiting Earth to the (debatably equally significant) trajectories of 
birds being catapulted at green pigs. 

Fast forward from naive elementary-school self to naive present 
self. Coming from a Flash and animation background, l was used to 
a cotton-wool world, I would code something once and it would 
magically run on oodles of browsers and devices. It was rewarding 
and flexible with countless ways of solving the same problem. 

However, a year ago I left this happy place and faced fresh 
challenges. For me. the triumphant return of HTML and web 
standards meant learning new technologies. I did so with my first 
standards project for a beverage client, As an HTML-tenderfoot, I 
had an advantage: I was completely oblivious to the boundaries and 
limitations in this new world. Unsuspecting as l was, I pushed for 
more and more elaborate designs and visuals with the desire to 
create something that would capture the level of Immersion we 
were all used to from Flash. In the end, we were able to create 
something unique that bent the venerable norm of standards 
websites at the time. We let our idea dictate the technology. 


During my first excursion to standards-land. countless late nights 
taught me valuable lessons. Creating expressive experiences came 
at the high price of fragmentation. Suddenly, we had to account for 
platforms, devices and browsers. Whereas creating a gratifying 
visual effect in Flash was a matter of applying the right timing and 
easing to an animation, with web standards it meant doing the same 
thing for one platform and then altering it entirely tor others. 

Luckily. Web Standards have an Incredibly talented, ever-growing 
community ready to swoop in for the rescue. There is a startling 
abundance of amazing frameworks, libraries, utilities, code-snippets, 
gists, forks and services to solve this fragmentation with abstraction. 
Above all, jQuery became the Swiss Army knife of my utility belt for 
all things cross-browser abstraction. Suddenly, tasks I deemed as 
tedious were done for me automatically behind the curtains. 5oon, 
the ubiquitous Inclusion of |query.mln.|s was accompanied by an 
ever-growing army of fellow community creations. Any complex 
problem that needed solving? The Internet probably had a solution 
ready for me. and the utility belt kept growing. 

After a while I became suspicious: grid frameworks determined 
our layouts, Typekit chose our fonts, and animations defaulted to 
easeOutQuad. Building something new and unique had turned into 
an orchestration of pre-existing pieces, All I had to do was lay out the 
string and tie those pieces together. 

That's when It struck me: this utility belt had become the calculator 
watch. I didn't know or understand what was going on under the 
hood anymore. I realised that I had started to delegate my curiosity 
to the Swiss Army Knife. Technology was dictating my ideas. 

Abstraction isn't inherently bad. Frameworks like Processing take 
away all the unnecessary baggage of low level languages. JQuery 
does the same deed for standards by Ironing out the scattered 
browser landscape. However. In striving for Innovation, we can't 
become complacent with the defaults we've grown accustomed to. 
Every once in a while we must risk breaking things and tearing them 
apart to push beyond what's Just good enough into what is great. 


Any complex problem that needed solving? The Internet 
probably had a solution ready for me 


16 


header 
















technology- 


Working for 
killer clients 


<lieader> 


comment 


Devin Silberfein is the chief operating 
officer at Flash tr allblazers 2 Advanced 
Studios. Based in the California hills , 
he has over a decade of on-the -job 
experience in interactive, web 
and mobile de velopment 
andanever-say-die 
attitude to getting 
things done. 


Devin 

Silberfein 


If they don’t kill you, they will only make you stronger 


T o recycle (and modify) an old saying: clients, you can t live 
with them, and you can't live without them. That Is the nature 
of our industry. We all have internal, back-burner projects Capps?) 
that we'll eventually finish and launch to wild reviews. Well sell them and 
retire young. Until then though, we spend most of our hours on client 
work. After all, clients afford us the opportunity to create things for the 
masses on a daily basis, while providing a level of variety that most of us 
need, else we'd go crazy. 

In our 13 years and over 1.000 projects, 2Advanced has had some 
great clients and our fair share of challenging ones. In time, those 
challenges make us stronger and more capable. My eleventh grade 
English teacher wasn't a big fan of my work, but 1 probably learned more 
from him challenging it than I did from any other teacher or professor. 

Here are the dients who like Mr Pepe in high school have taught me 
the most (albeit accidentally). 

'Here's the thing, we need to launch in 30 days; 

We've seen new and return dients come to us with that three-month 
project and only a month to do iL It'd be suicide to take on their work, but 
we've all done it - often because it really was a cool project and we 
wanted to prove we could do it And that's exactly how this client has 
made our team better. By sheer will the team pulls out a miracle and our 
confidence as a group rises, Suddenly the three-month projects are 
easy. If not boring. Additionally, when we put our process to a stress test 
like this, we team what works and what doesn't 
I have a background in design.' 

Too many times I've had dients Idl me about their background in 
design. I'm not sure if this is meant as a compassionate play ('see, I'm just 
like you') or a challenge Cl know what I'm talking about so you'll have to 
try harder to 'wow' me}, but either way I see it as a warning sign. 
Regardless of the validity of their opinion, we end up defending our 
designs, and in time well look at our work more critically to make sure It's 
bulletproof. In doing so we find things to improve that we otherwise 
wouldn't have even considered, that ultimately make for a belter product 
and happier dient 

Looks Fantastic! Just one more thing/ 

We recently wrapped up a design project which easily set the record 
here at 2Advanced for 'one more thing emails. Every time we delivered 
an updated comp our dient was ecstatic - loved it and graciously 


thanked us - but they Just had one little change. Scope and budget 
Issues aside, this was especially challenging as we teetered at the edge of 
completion almost indefinitely only to get sucked back in for one more 
round' of revisions. Adding to the frustration, we knew that each revision 
weakened the design incrementally. In the end though, this was a lesson 
in detachment and patience. We fight to do great work, but it's our client's 
name on the line and they know their needs and customers better than 
■we do. Just remember to breathe.: Itll be okay. 

Our office Is still using IE3, so we need to target that.' 

When I look at penetration rates for different browsers, I always 
wonder how many of those IE users are the dients of the world, under 
corporate lockdown. Without turning this into a browser debate, it stll 
warrants some consideration when clients are myopically focused on 
what it looks like within their walls and not on their customers' screens. A 
dient on IE8 means nothing if the target audience mostly uses Chrome. 
If we must deal with older browser versions, we approach things from a 
standpoint of progressive enhancement' (a more glass-half-full version 
of 'graceful degradation'). We will design for ideal situations and also 
create a mock-up showing how older versions will perform. Once we 
have buy-off on that, we have a lot of room to optimise for each browser 
In the end, we’re on top of browser compatibility issues and we sleep well 
knowing that we provided the best possible experience for all users, 

We can t decide, so let's combine elements of both designs/ 

Its been statistically proven that if you produce two unique comps for 
a dient 78 per cent of the time, they'll come back with an answer like this 
I like to think of this as a good thing because it means two designers both 
hit the mark, It's a more complicated situation in practice, though there is 
an upside to this, Much like the dient above who challenges everything 
you put together, we end up looking at our work under a microscope; 
and It's stronger In the long run because of it With two designs each 
partially hitting the nail on the head, the new task is taking what's right 
from each without creating franken-oomp. This is a challenge for sure, 
but any lime we can rise above a challenge, we know we're making 
ourselves better. 

All ot these lessons were learned with the gift of hindsight At the time, 
expletives were muttered, drinks were had and computer mice were 
thrown, al to handle the frustrations. Remind me of that next time my 
mouse makes It to the other side of the room. 


header 


17 














<littactai> 


comment 


technology- 


Life after 
Flash 


Patrick is responsible lor driving and 
shaping R/GA's technological vision, 
while also working closely with 
clients to help develop their 
strategic tec hrucal requirements. 
Prior to this, Patrick was 
director of engineer! ng at 
the Walt Disney 
Company. 


Patrick Van Kami 


Flash is dead, so let’s build a better Internet - with responsible JavaScript 


M ost developers celebrate the rise of HTML5 and JavaScript 
as the dominant rich Internet application technology hut 
few could have dared hope that Flash would disappear so 

quickly Incur enthusiasm to build a new Internet on open standards, we 
must be careful not to make the same mistakes with HTML5. 

Flash was the standard for rich content on the Internet, mainly 
because there was no other option. Browsers did not support animations 
or web video natively, forcing developers to use plug-ins. Flash defeated 
competing plug-ins like Real Player and Microsoft SltverllghL According 
to Adobe, it's available on 98 per cent of desktop browsers. 

The only non-plug-in option for rich content JavaScript suffered from 
the inconsistent way that it was implemented in different browsers, 
making cross-platform code difficult - but worse, many web developers 
(myself Inducted) considered it a toy language in comparison with Java. 
JavaScript was confined to basic tasks such as form validation, dynamic 
navigations and bask: content manipulation. 

Although Flash achieved dominance few regarded it as a good 
technology. Flash content was rich, but it was hidden from search 
engines, slow to download and confusing to users who tried to use 
browser controls like the back button, There just had to be a better way. 

Even bdore Apples refusal to include a Flash player in iOS, there was 
a growing realization that JavaScript and HTML were undergoing a 
renaissance making it a viable alternative to Flash for RIA development 
- even without the new mecte features offered by HTML5 and CSS3. 

How did this mirade transformation occur? First JavaScript’s critics 
had underestimated its capabilities for functional programming, which 
gives it flexibility, elegance and power. jQuery and other libraries showed 
JavaScript could be used for serious engineering- even high-concurrency 
server-side platforms can be made through Node.is. 

(Query also made cross-browser JavaScript applications possible by 
providing universal abstractions over different browsers. And on top of 
JQuery cpenrsource developers built an array of new libraries around 
QtHub, including code analysis tools, test-driven development tools, and 
optimising frameworks-to modem application stacks in pure JavaScript. 

(Query's fluent API and ability to mitigate browser fragmentation 
made JavaScript's popularity hugely possible, but it is not the only 
alternative. Frameworks like MooTods or Prototype have their adherents 
- although no other library has been as widely adopted as (Query. 


The success of other non-corn pi led languages like Ruby and Python 
has shown that a compiler Is not essential for building large-scale 
applications ■ unit tests and code analysis can replace or even extend 
the protection they offer. 

Test frameworks Ike JsTestDriver and Phantom JS enable browsertess 
testing from command lime or build script For actually writing unit tests, 
Jasmine and QUnit are leading the pack. For those ready to take testing 
to the next level. Simon provides mocks, spies and matchers that enable 
you to write fine-grained tests where collaborating components are 
faked to Isolate individual code units for testing. 

JSLint is a widely used code analysis tool, which promises to hurt your 
feelings and make you a better programmer. And for those 'who find 
JSLint's flinty critiques loo harsh there is the gentler JSHinl tool. 

To reduce the browser footprint of your JavaScript - both in terms of 
HTTP requests and in download size - there are numerous options for 
minifying or uglifying multiple script flies Into a single download. The YUI 
Compressor is most well known but also check out Google's Closure 
compiler and UglifyJS. 

There are new many full application stacks, including model-view- 
controller platforms like Backbone, Spine and AngularJS A completely 
browser-based JavaScript application can be built without the need for 
server-side scripting (other than a REST API to handle data requests). 

All of this has created new possibilities for JavaScript engineers - but 
also new risks. As the capabilities of modern browsers enable more 
sophisticated and exciting interactions, many of us fall in to toe trap of 
exploiting these opportunities without casting an eye back to our recent 
experience with Flash. The temptation to add imaginative interactions in 
the frontend is leading to practices that give poor browser performance, 
and cope poorly with the increasing number of mobile devices used to 
view our sites. Careful technical design (s as critical as ever 

A colleague of mine at R/GA London often uses a quote in a talk on 
this very subject where he references Jeff Goldblum's character in 
Jurassic Park, saying ",.your scientists where so preoccupied with 
whether they could, they didn't stop to think if they should’ 

5g nexttimeyou are building a totesamazeballs' parallax extravaganza 
in HTML5 and JavaScript, take a step back. Try to think about how it wil 
work on a mobile device on 3G. Users won't congratulate you for using 
web standards if they have to wait three minutes for the page to load. 


18 


header 












Pay As You Go 
Advertising 

Advertise on Google. 

Pay only when people click on your ad. 


For most types of advertising, you pay for people to see your ad. With Google AdWords advertising you 
only pay when they click to visit your website. So you get exactly what you pay for - more customers. 
And because this is pay-as-you-go advertising, you have complete control. 



Control how much you spend 

You can seta daily spending limit and an amount you're happy to pay for people to dick 
on your ad. The price is chosen by you, not us, so you never have to worry about going 
over your budget. 



Control who sees your ad 

Your ad will only appear when potential customers are searching online for relevant 
terms you've chosen to describe your business. 



Control where and when they see it 

You can choose to target your audience by location and time: attract local customers 
during your opening hours or, lfyou J d rather, promote yourself to a global audience 
round the dock. 


Voucher missing? 


Don't worry, someone in your company may 
have beaten you to it. Track them down and 
make sure they're claiming 

£50.00* free advertising credit 

with Google AdWords for your business. 

No minimum term or commitment 

Offer only available to businesses in the UK. 




Don't miss out - try it today 

We're offering£50.00* free Google AdWords 
advertising credit for business users**. There's 
no obligation to continue - you're in control. 

To start attracting new customers today: 


Visit fioog lexo. u k/ads/start 


Or call 0800 169 0478* 



***Calls to 0300 numbers are free from BT land lines but charges may apply ffyou use another phone company, call from your mobile phone 
or call from abroad. 

^Ternns and conditions apply. Promotional credit can only be used Tor .AdWords accounts that are less than 14 days old by advertisers with 
a billing address in the UK. Advertisers will be charged Tor advertising that exceeds the promotional credit. Advertisers will need to suspend 
their ads if they do not wish to receive additional charges beyond the free credit amount Offer subject to ad approval, valid registration and 
acceptance of the Google AdWords Programme standard terms and conditions, The promotional credit is norrtransferable and may not be 
sold or bartered. In some cases, advertisers who choose prepay billing may be subject to a £10 minimum prepayment before their account is 
activated. Any such prepay amount will be credited to Advertiser's account once account is activated. One promotional credit per customer. 
For full terms and conditions please visil hrln^/wv/iw.gnagle.cn.ukj'ariword wnucherlerms, Google Ireland Limited, a company incorporated 
under the laws of Ireland, with company registration number 36RD47 and registered office address at Gordon House, Barrow street, Dublin 4. 
Ireland, Copyright 5012, Google and Gnngle AdWords are trademarks ofGnagle Inc, and are registered in the US and other countries, 


Google 

































































































































































feature 




SijTwraS 











MATT MULLEWWEG J 


u For new developers, WordPress 
can be like a gateway drug ” 


WordPress is synonymous with the web, it 
revolutionised the site- bull ding process and now 
accounts for around 16 per cent of sites on the 
Internet. The name and face behind the publishing 
platform is none other than Matt Mullenweg. In 2005 
he founded Automatic, which grew into the now 
impossible to ignore WordPress. 

With WordPress approaching its tenth birthday, Web 
Designer got to speak to Matt on the past, present, and 
tutu re of the platform. He reveals how WordPress is a 
gateway to web design, the focus on improvements 
over the next 12 months, and the challenge of shifting 
to the mobile arena. 

WordPress is fast approaching its tenth birthday, How 
has the platform changed and why do you think it 
has been so successful? 

Where to start! When Mike Little and I were throwing 
ideas back and forth about the first release of 
WordPress I don't think either of us would have 
imagined where it has ended up today 

In the beginning we were totally focused on 
blogging, mostly for our own use. and in those 
formative years the community laid down the 
foundation for much of what were known for today 
including the ease of set up, customisation, and a 
fanatical focus on authors. We really wanted to build a 
great environment for authors to create in. That's why 
even today consultants choose WordPress because 
they can train clients in a fraction of the time it would 
take with other systems; it was that initial focus on 
regular end-users. 

The second mam phase was WordPress becoming a 
CMS. I saw a pretty clear need in our community from 
folks who wanted more than just a blog, they wanted 
the WordPress ease of use for the«r entire site. We 
started to think about what it would look like from an 
architecture point of view to manage content outside of 



a normal blog chronology, figured out a pretty elegant 
way to do it. added the page and theme frameworks 
we still use today, and finally introduced WYSIWYG 
shortly thereafter. Those seeds kept growing and finally 
matured in our 3.0 release when we made it easier for 
developers to use Custom Post Types to manage hot 
just posts and pages, but really any type of content you 
can imagine inside of WordPress, whether it's albums, 
real estate listings, events, or really anything. 

The phase we're in now is WordPress as an 
application platform. As our developer community has 
grown up, and experienced the flexibility of Custom 
Fields, Post Types, and formats, they're starting to build 
applications on top of the WordPress framework, or as 
plug-ins, that don't look like WordPress at all. 
BuddyPress, bbPress.and the commerce plug-ins like 
WP e-Commerce and WooCommerce are good 
examples of this, tx.it I think there's way more coming 
down the road in places you'd never expect, like Spotify, 
which uses WordPress for its website. There's probably 
someone reading this very magazine who's going to 
build the next big thing or service using WordPress 
behind-the-scenes, beyond what I can even imagine 
nght now. 

The WordPress platform has been adopted by 
millions of designers and developers. Do you think 
that WordPress is removing the technical element of 
the design process, or encouraging a new generation 
of designers and developers? 

1 think for new developers. WordPress can be like a 
gateway drug. You can create great-looking sites 
without writing a line of code, but if you're serious about 
your craft soon you'll want to colour a bit outside the 
lines. You'll start to pick up a bit of CSS to customise 
things, or a little jQuery to do an effect a client is asking 
for. and next thing you know you’re knee-deep in PHIP I 
love that! 

It's a lot hew my own story was - I didn't learn a 
single line of HTML. CSS. or PHP in school, it was 
something i picked up along the way as I wanted to do 
more and more with the sites I was building. I read 
blogs I ke zeldman.com and meverweb.com, books, 
and tutonais all over the web. 

That's not just the future generation of web 
developers, it's the future of learning in general. There is 
more information put online every day than any of us 
could consume in our lifetimes, the only limits to what 
you learn are an internet connection and your curiosity. 

WordPress is a champion of open source and open 
standards. The community is constantly pushing the 
platform forward. How big Is the community, what Is 
its purpose and how can people get involved? 


The community has really surprised me in its growth: 
there are about a dozen core developers, 150 core 
cont-ibutors. about 300 active community volunteers 
on ' WordPress org 20,000+ plug-in and theme 
developers, and I est mate over 100.000 people 
making their living from WordPress as consultants, 
designers, developers, and writers. 

The development side is pretty amazing to be a part 
of - you can't walk up to Google and ask to write code 
with their best engineers, but you can post a patch on 
the WordPress bug tracker and have a conversation 
with some of the best PHP developers in the world just 
a few minutes later. As the community has grown it can 
be intimidating to get involved, so we published a Core 
Contributor Handbook, like an open source field guide 
to getting involved with development ■ make, 
wordoress-Q rq /c ore/han d boo k. And even if you can't 
write a line of code, there are a lot of ways to get 
involved with the forums, documentation, design, and 
more. It's a very open and welcoming community. 

As WordPress has grown, so has the market 
surrounding the platform. Themes and plug-ins are 
key components. Is this something you like to 
promote and encourage, while also keeping an eye 
on quality and credibility? 

Plug-in quality and security has been a huge focus for 
us this year. For security we've started proactively 
scanning and flagging all of the 20,000+ hosted 
plug-ins. We've fixed hundreds and hundreds of 
problems and pushed the updates out to all WordPress 
users, as well as helped educate plug-in authors on how 
to code In a more secure fashion. 

Second, we've had some pretty effective redesigns in 
the piug-in directory to give people more indications of 
quality. For example, instead of just showing the star 
rating, we now show how many support threads that 
plug-in has and how many of them are resolved. That's 
more than a rating that will tell you how active the 
plug-in authors are in supporting their work, which is an 
excellent sign of quality, 

What is the focus for updates/!improvements to 
WordPress over the next 12 months? 

I'm focused on three main things: 

L The core development team looking at making the 
media experience better, especially around how you 
upload and interact with photos, galleries, and featured 
images, I think users will appreciate this a lot, 

2, Through the Jetpack plug-in Automattic is helping 
make WordPress more social, to make it easy for your 
visitors to share and comment using their Twitter and 
Facebook accounts, for people to subscribe via email, 
and in general to leverage the cloud services of 


22 


feature 


















feature 


u I saw a pretty 
clear need in oil - 
community fromi 
folks who wanted* 
more than a blog * 




















MATT MULLEWWEG J 



WonJPmss-g^to make WordPress more capable. 

3. At the heart of Word Press is customisation, and we 
want to make it more accessible for users to customise 
their sites without having to dive into theme code. 
Developers will be able to leverage these APIs to give 
their clients more ability to update their site and be 
independent, which is also exciting. 

Beyond the short-term future of Word Press, what 
challenges lie ahead for the platform over the next 
ten years? 

Our biggest challenge is the shift to mobile phones and 
tablets. WordPress was born, and grew up. in a desktop 
world, However every year we've increased our 
investment in our mobile apps and it's paid off with 
more than 4 million users already. We need to bring 
everything people love about WordPress in the browser 
- the flexibility, customisability, and usability - to native 
clients. Ten years from now there will be a dominant 
CMS on the tablet side of things, and whether it's us or 
not depends on how well we make this transition, 

As a man with his finger on the pulse of web 
publishing, what do you expect, or hope to be the 
next big thing? 

I’m really excited about responsive design, as much for 
its elegance as the fact that people are really thinking 
about their site as something that's experienced on 
different screens and in different contexts. The best 
thing about people giving more thought to mobile, or 
even thinking mobile-first, is that they're reconsidenng 
what the most crucial aspects of their web presence is 


and paring things down to the bare essentials. That 
simplification is extraordinarily hard for organisations to 
do, but they're forced to by the constraints of the 
mobile platform; and when they seethe sky didn’t fall 
down that reduction can make its way back upstream 
to the desktop experience. 

WeVe been having the same experience In 
WordPress. The mobile apps have been inspiring me on 
how we can pare down our dashboard and make a 
radically simpler WordPress. 

Beyond WordPress. you have been involved in a host 
of different startups such as Akismet and Polldaddy. 
As a veteran when it comes to putting startups Into 
practice, what advice would you give to anyone 
looking to start their own online enterprise? 

Thing single most important thing is the people you 
work with. Find people who are as passionate as you. 
share the same values, and who you want to stick with 
in good times and In bad. 

You have been touted as one of The Top 10 Most 
Influential People Online‘ by a number of 
publications, only superseded by such notable web 
luminaries as Mark Zuckerberg, Larry Page and Steve 
Jobs. That's good company, but how do you view 
your achievements to date? 
it's very humbling, and above anything its a testament 
to the people I've had the good fortune of working with. 
I don't think we're done yet. there is so much work left 
to do still. I wake up every morning excited about the 
challenges ahead. 


Finally, in keeping with our two-hundredth issue, 
what tools and themes would you recommend? 

How that wete responsible for over 16 per cent of 
websites. I think these are essential additions 
For WordPress the following tools and themes; 

1. Jetpack - includes stats, contact forms, sharing 
buttons, email subscriptions, and more, ( ietpack.me) 

2, VaultPress - bulletproof backup and security for 
business WordPress blogs, ( vaultpressxom l 

3, Akismet the best anti -spam around. fakismet.com) 

4. P2 Theme - an internal Yammer or Socialcast that 
you can run anyplace you can run WordPress. 

( p2theme com} 

5. j theme - it's a terrible name, but check it out here. 

bit.lv/w4csYF 

6, Theme Check - make sure your WP theme is up to 
snuff, code-wise, f wordoress. am /exten d/p I uq- in sf 
theme-check ) 

For third-party tools these are an ideal choice: 

1. Facebook for WordPress - an official plug-in from FB 
to connect your biog to the biggest social network in 
the world. 

2. WP-Super Cache - caches and speeds up your 
WordPress, so it can run as fast as possible. 

3. Email Post Changes - emails you a diff any time a 
WordPress page or post is changed, Great tor keeping^ 
up with changes on multi-author sites, 

4. AH in one SE0 - has a tonne of settings for SEG- 
optimising your site. 

5. bbPress - Now bbPress is a plug-in so you can 
drop-»n forums to your WP-powered site with Just a few 
clicks, no need to try and integrate templates. 


















# heart internet 

UK’s MOST ADVANCED 
RESELLER HOSTING 

Sign up to our award winning Reseller Hosting and sell unlimited websites with unlimited 
web space, bandwidth, databases, email and more, all at no extra cost. 

0 

* 

a 

£ 


The complete Reseller Hosting solution 

Sell unlimited websites and domain names, as well as our wide range of additional products to 
fit your customer's needs, Use our hosting billing & CRM solution 'HostPay' to sell in real time. 

100% YOUR brand 

Every aspect of your hosting is while label and can be branded as your own, including your 
customer's control panel, web mail, welcome emails and anything else you can think of! 

Create your own packages 

Customise each account to any level you like. From how much web space and bandwidth 
your customers get, to selecting what web apps they can install from their control panel. 


24/7 UK support 

We don’t employ any contractors, temps or external support services; all our support 
team are 100% based in our UK offices and full time members of staff. 

No hidden fees 






Increase your proms with 
exclusive reseller discounts 


G Dedicated Servers 
C Virtual Servers 
C goMobi 
G SSL Certificates 

G Hosted Exchange 
G Premium Email 

£ Bulk Domain Names 


66 Heart Internet support their 

customers with market4emJlng 
hosting technology si 
greet prices 


All the features you need to attract and manage customers are included as standard. Unlike Suzi Perry 
our competitors we don't charge you for basic functionality, such as your customers getting a J ' Jq f 
brandable web hosting control panel or additional MySQL databases. 




As well as selling unlimited websites, pick and choose from a wide range of additional products. Including 


Sell Virtual Servers 

Only £8.99 per month 


Sell Hosted Exchange 

Only £4.99 per mailbox 


/ Create your own VPS packages 

/ Rill API Integration / 

/ Linux & Windows 1 

V Dell A Intel hardware 

/ Full white label control panel for 
* your customers 

/ Sell VPS In reel time 


/ MS Exchange 2010 as standard 

j Free OuBook 2010 for you 4 i 
your customers 

10GB storage * 

/ Transfer in Exchange 2003 4 
2007 easily 

y/ Sail Exchange in real time 


Unux 4 Windows 


Find out more: www.heartinternet.co.uk 
Call us: 0845 644 7750 

Normtt Price from only E29.9S ptr month 


# heart internet 

www.heartinternet.co.uk 

Web hosting I Reseller hosting I VPS I Servers 









Nespresso Naora 

www.nespresso.com/naora 

Development technologic* HTMLS.JQuery 



Designer Hello Monday 

www.hellomondav.com 

Fluid video and layered graphics give this limited 
edition site a sense of emersion in the story it is telling 


£"£££££! asked with 

i******** 

• ••••*#•£ communicating a 

** ***** 

It ::::: complex marketing 

message involving how 
late harvesting is used 
within the coffee 

** 

Industry. Hello Monday 
created an emotive site 
that is a masterclass in 
the use of online video. 
After loading, the viewer 
is drawn into the site with easy access 
to the Nespresso Naora story. 

Hello Monday explains its approach: 
"We identified the main task of the site 
as being a playful and immersive 
presentation of the videos that carry 
the experience. We felt the need to add 
specific interactive features, eg a 
‘ripeness slider' that allowed the user to 


get a perspective of the issues of timing 
involved in the coffee making process." 

The site is also built to allow access 
on a number of platforms. The desktop 
version uses Flash, with the version 
aimed at mobile users optimised with 
HTML. This may break with trend for 
responsive design, but Hello Monday 
felt that this was the best way to present 
the site to as many potential viewers as 
possible, and keep the user experience 
intactacrossall platforms. 

Striking in its use of 3D and video, 
this site shows the technical prowess 
that Hello Monday posses. The site is 
massively optimised to ensure a 
smooth viewing experience. Graphics, 
video and user interaction come 
together on a site that is at the cutting 
edge of interactive design. 


§ I We identified the main task of the site as 
being a playful and immersive presentation 
of - and navigation between - the videos 
that carry the experience IP ! 



c Above* 

* The photorealistic graphics combine with 
smooth scrolling to offer a "window’ into the site 


SF3D3HE 



AAC73E7 *766.033 



A321932 *A85752 ft9!543C 


abcABC 1234567890 


<Ahinre> 

* Fmligerwas developed in 1&68 by the legendary 
type designer Adrian Frutiger, The typeface is 
available from Linotype 


26 


lightbox 



































Got it? Flaunt it! Tell us about your site ^ webdesigner@imagine-publishin 


L1GHT$ 



(Below* 

- The layered graphics and interactive 
■coimpo nents offer a depth to the sorolll ng 
homepage that instantly engages with the visitor 




* Full-matlan video is augmented 
with interactive graphics, which 
allows tiie viewer to access more 
detailed information 
*The graphic panels overlay 
beautifully when the video is paused. 
The site is an exem pla r y model or 
responsive des ign I n every way 
•The ripeness slider gives the viewer 
an insight into how the late harvest 
influences the taste of the coffee 
- Branding and the commercial 
aspects or the site are nut forgotten, 
ottering visitors full a fully functioning 
eGommerce capability 


lighlbox 


Z7 



















Know a site that deserves to grace these pages? Tweet us now Q@webdesignermag 


BokicaBo 

www.bokicabo.com/en 

Itavulopittant technologies MTML5, jQoery. CSS3, Vlmeo Froogaloop API 



Designer Nikola Arezina 

www.berqb.com 

The creative use of video is at the heart of 
this site that showcases the handmade 
clothes of this Serbian designer 


ZZZl mall sinesses can now 

lllltlltl compete with even large 

***** fashion labels using sites 

like this. Nikola Are2ina 
t dearly understands the 

***“::*** power that video now 

•ZZiSII has within the 

"*!”**** eCom merce space. 

Using a combination of 
technologies.. the 
innocuous looking 
homepage of this site is a gateway to 
creative video footage of the designer's 
handmade clothing range 
Areiina explains the thinking behind 
the site's design: "The main idea was to 
draw attention to fashion by using the 
web as a medium of promotion rather 
than retying on conventional and 
expensive ways of advertisement. I 
think that this version of the site Is our 


best yet and illustrates the positive 
energy we have towards the project." 

The use of video across the site 
allowed Nikola to showcase the fashion 
designs of BokicaBo with Innovative 
video using the Vlmeo API. With a 
limited budget it illustrates that with a 
little creativity and an understanding of 
what the brand offers, engaging video* 
based content can be created. 

This small and exclusive brand uses 
traditional photo shoots, well-chosen 
typography and fun video footage to 
create a site that engages with the 
visitor, offering easily accessible 
information wrapped in a piece of 
seamless design. Nikola clearly 
understands how to present this brand 
and brings his design skills to the fore 
with each page element expertly 
delivered to the viewer. 


I ll I think that this version of the site is our 
best yet and illustrates the positive energy 
we have towards the project III 1 



<Ab»Vu> 

* The new site for BokicaBo showcases the new 
fashion range via engaging video footage 



<flhove> 

-The expert use of full HD-<quallty video footage 
shows off the exc luslve handmade collection of 
the designer 


28 


lightbox 



















































UGHT$ 



<Top left, CKithWlHO 



* The video can be paused and 
the clothing on show looked at 
in high ■ resol ution deta il 

* The previous collections or the 
designer can also be accessed 
via a well-developed vertical 
scroll micioslte 

* As eac h p lece of clothlng Is 
handmade, simple access to the 
buyl ng option s Is always j ust a 
dick away 

* The older pieces In the 
BoklcaBo col lection use 
traditional static imagery that is 
professionally presented 



#a?AJB1 flDF0450 JTFBCD47 



flCACBCS flE0235O AS301D0 


abcABC 

1234567890 

abcABC 

1234567890 

<Abovetop> 

■ Rooney from Jan Fromm Is an original font from 
the designer who has been working sine 2003, 
and is available rrom Type* kit 

<Above> 

■ Ron n ia was desi gned by Veronl ka Bu ria n and 
JoseScagllone who are better known as 
TypeTogefher, The font is available from Typekit 


lightbox 


29 




























Know a site that deserves to grace these pages? Tweet us now Q@webdesignermag 



* Tlie one-page verb ca I scrol ll ng site 
packs, in the content to showcase 
the studio's many talents 



^Afaiwes* sflbPVu* 

* The short vertical sera II of the site is a great deslgn feature The visitor is invited ta open ad ditlonal w inflows to view - The Hexagon Factor y's design places the people bemnd Place 

that the developers execute With ease detailed I nformation about the studio's ser vices Cliche front: and centre 


30 


lightbox 

























L1GH1$ 







<Delow^ 

* Bebas Neue I s anIm proved version or the earlier 
font Bebas created ip 2005 bv Dfiarma Type, 
whsra me font I? a free download 

ABCflBC 

1234567890 



<J\1MpVu> 

* The header on the site Is a typlea I exa m pie of 
how the designers have used bald images as a key 
design statement 


Place Cliche 

www.placecliche.com 

Development t('4:tiiiQ]oyii'!i CSS3. jQuery 



Designer Benjamin Cochois 

www.hexaqonfactory.com 

A superbly realised site that showcases the wide 
range of services on offer from the Place Cliche 
studio is a feast for the eye 


he brief for the Hexagon Factory 
was to showcase the services 
l !mm available from Place Cl i th£. As the 
studio prides itself on high-quality 
imagery, this site is dominated by 
pin-sharp images that give each 
page a high quality presence. 

Says developer Benjamin 
Cochois: Tlace Cliche Is a 
professional photo arid video 
studio, so we decided LhaL the 
design should be based on hi-res pictures. The 
main content is hidden by default, and users 
need to click on sections titles in order to 
make it appear, so they can enjoy huge high- 
quality background Images first then learn 
more about the studio only if they want to" 


Using the now familiar vertical scroll 
technique, the Hexagon Factory didn't want 
the site to be a passive experience. The hidden 
content slides into view with a simple click on 
each window, that themselves horizontally 
scroll - this works as a great counterpoint to 
the vertical scroll Static images mix with video 
and text to deliver a site that speaks volumes 
about Cochois' understanding of his client. 

Stylistic in its approach, this site is also 
eminently functional as well. Prospective 
clients of Place Cliche will be in no doubt about 
the studio's competence, and with the 
Hexagon Factory's design perfectly 
complementing the studio's brand values, this 
site is a great example of how a business' web 
presence doesn't have to be conservative. 


i § Static images mix with video and text to 
deliver a site that speaks volumes about 
Cochois’ understanding of his client 9P 


31 


lighLbox 














































I 

<clesign <liary> 

| experience SON Y 


Design diary 

Ride the development cycle 



Ni kki DeFco,. creative 
' copy director^ 


^[Kristin Keefe,M 
exe eutive prod u cer 




Project experience SONY 

Web I expofteoce-soMfy-oon 1 
Company I Firstborn 

Web l www.fivstboni.corw 


New York strategists, designers, 
and technologists took up the 
challenge to make users believe in 
the Sony experience 

The Sony brand is a global phenomenon that 
has been an integral part of the technology 
revolution - think Walkman or PlayStation for 
starters - they are leaders in a host of fields. 

Firstborn, translator of engaging, intelligent 
and innovative user experiences, joined forces 
with Sony to help remind the consumer that 
there is much more to the digital behemoth 
than meets the eye. 

Gabe Garner and Nikki DeFea The brand 
recognition of Sony is outstanding - nearly 
everyone has owned a Sony product at some 
point in their lives. The problem is r people 
generally think of Sony as an electronics brand 
and don't know all the other things it doesc it 
creates epic video games; it's one of the 
leader's In the movie industry; it signs some of 
the best names in music, it makes things that 
fans crave, but no one associates their 
favourite blockbuster hit with Sony. It's the type 
of problem we love to solve. We set out to 
make a great brand seem more relevant with a 
younger demographic, and insert it straight 
into their culture. 

"Sony’s brand message is make-believe, it 
means that anything you can imagine, you can 
make real. We had to bring this to life in a 360 
program that was heavily rooted in digital. And. 
we had to do it in a way that only Sony could, 
one that reached our younger audience? 


Jennifer Xin, 
art director 


Aaron Pol lick, 
creative director 


Sony is not short on new commodities - NEX, Amazing Spiderman. 
Firstborn decided that it would make unexpected combinations 

Garner and DeFeor "Taking .he varies well-known Around me same time. Bony was .aur 


Sony properties, we asked ourselves what It would be 
like if we combined them to create something 
completely hew. What if we took a musical artist add 
combined it with the new Sony tablet? A blockbuster hit 
with a cutting-edge camera? This became our formula for 
developing our ideas into make.bef&eve experiences. 

We took a look at the big Sony Launches In the 
upcoming year We had a playground to choose from: big 
artists were getting signed, one of the most anticipated 
games of the year was being released and exciting movies 
were hitting theatres. One of the properties that really 
caught our eye was The Amazing Spider-Man reboot. We 
knew that it would be fun to concept and already had a 


f-, r y h=,cji nf paripr followers 


Around the same time. Bony was Launching their new 
professional grade portable camera, the NEX. We thought 
it would be interesting to combine the NEX with The 
Amazing Spider-Mart. 

"After going through several rounds of ideas,, we landed 
on one that captured the essence of make,believe and 
allowed us to bring imagination to life. 

We created an interactive panorama that told the story 
of The Amazing Spider-man chasing crooks through 
Manhattan. When it was first launched on the make-believe 
hub. it was incomplete-it was missing characters that were 
needed to finish the story. We asked fans to submit images 
of themselves in the various poses to star in the panorama. 
By simply submitting a photo, they could be chosen to be 
Amarinn ^mder-Msn adventure? 


Dofl Y.R Yun. Senior 


developer 


32. 


design diary 


























experience SONY 


I 

iliniy> 

)ny | 


Location scouting, user-generated content, and moody 
visual cues all make the site jump off the screen 


Aaron Rollick: "The three main creative 
challenges of the experience were the 
panorama photo shoot* the composition 
of the final panorama, and the site 
interface design, 

'Once we decided on the general plot of 
the panorama adventure, we went through 
many rounds of sketches to determine 
every element we would need to 
communicate the story. All the details, from 
the characters' wardrobe to the buildings in 
the scene, were planned so we knew what 
elements we would have to shoot both on 
the street and in the studio. We 
collaborated with photographer. Dave Hill, 
to capture all the pieces with a Sony NEX 
camera - we loved his style and knew this 
kind of prefect was right up his alley 

'Few' the background we scouted areas 
around IMVC that fit the look and fee! we 
were going for. We wanted an urban 
environment that was a bit rough around 
the edges. Full streets as well as individual 
buildings and urban elements were 
captured to be composited into the final 
scene, All the characters and props were 
shot in Dave's studio, allowing us to rig 
actors for dramatic moments-in-time like a 
robber ftying off a bike. Each element was 
shot on white to make for easy extraction 
of the background. 


'Once we had all the elements, we began 
compositing the scene. Each piece was cut 
out and combined into the master 
composition. The result was a massively 
long panorama that visually read from left 
to right. Bringing together user-submitted 
poses, studio-shot elements, and 
on-iocatfon backgrounds was quite a 
challenge. The lighting and colour had to 
be ]ust right to make the scene believable. 

"The NEX camera did a great job of 
getting us the content we needed, making 
it possible to bring all the pieces to life. 

The site experience interface design was 
crucial to the success of the campaign.. 

Users needed to be able to easily 
contribute their photo to the panorama or 
the scene would be forever incomplete. The 
interface design centred on creating an 
exploratory experience, allowing users to 
easily upload their pose at any moment. 
While navigating the site was key to the 
experience, keeping if as minimal as 
possible put the spotlight on the panorama. 

Tt was important to marry the look and 
feel of the panorama with Lhe interface 
navigation, all the while staying as true as 
possible to The Amazing Spider-Man 
aesthetic. Dark, moody and suspenseful 
visual cues managed to bring everything 
together perfectly." 
















I- 

<ctasign <liaiy> 

| experience SONY 






%3 g3ffi5Mi 

A lazy loading system and a custom 3D 
panorama engine ensured that the Sony 
experience was quick and efficient 

Dofl Yun and Francis Turmel: The Firstborn development team 
handled the backend duties entirely in-house. In order for us to 
get the aesthetic totally right, a custom 3D panorama engine was 
built to make the interactive panorama. It also allowed us to show 
the layers of the scene in making-of videos and media units. 

"A runtime asset coordinator was built to help the process of 
disposing objects into the 3D panorama world. By using this tool, 
designers could position each object exactly as they wanted it 
instead of relying on the development team to do it. Once the 
object was positioned. XML data - holding all of the information 
about each asset - was generated, In order to change or shift 
something, we simply had to replace the XML data with the 
necessary updates. 

"For each section, a lazy loading system was used to make the 
experience load swiftly and efficiently. The panorama scene had a 
5.000 pixeLwidth. so each object had to be loaded individually as 
it is displayed on the screen. This way, the experience didn't require 
all the assets to be loaded before a user enters.' 

# IP In order to get the aesthetic 
totally right, a custom 3D 
panorama engine was built i f 


—d 


m3 ■ 





























<de$ign diary> 

experience SONY | 



/2000** 

w TOTAL * 
-< MAH S 
% HOOKS A 


Plenty of props ^ 
were used to make 
sure the panorama 
had a cinematic; 
quality to it that 
,1 participants 
L c.Qu fd see 

themselves in. 


Kim Manley and Kristin Keefe: The team knew that 
posing and submitting a photo was a big ask, even with 
the final payoff of being in the Spider-Man panorama. In 
order to push it out to the masses we worked with Sony to 
stage multiple in-store events across toe country. 

‘Consumers could pose against a green screen and 
submit their photo with toe help of the Sony event staff. 
This in-store initiative, a&ong with a push across mustiple 
metfa channels, helped us to get the wo rd out to our 
target audience. 

"We created a custom video and interactive version of 
the panorama to be featured in YouTube's masthead, and 
optimised toe Ml experience for Facebook - our audience 


could upload a photo right there without having to "eawe 
the Facebook environment. A mobile site let users explore 
the panorama and watch behind-the-scenes video content 
featuring a filming of the panorama shoot and the 

compositing process. 


"We also had added extra incentives for the participants, 
like toe chance to wto a brand new Sony MEX camera. And 
of course, when users went ahead and submitted their 
photon social spring was key to get them to help spread 
the message." 


design diary. 


wsonwswTNPf* nut 

Atoouf the com 






























cm | 

SdINoir* | 

Dark side of 
the sun 


Web Designer takes the short hop 
to Paris to talk to French web 
architects Soleil Noir. They reveal a 
love of Flash and coffee, and how 
they keep their creative integrity by 
not doing sales strategies 


wlui Soleil Noir wltal A creative assortment of designers, 
developers, producers, copywriters and motion and sound 
designers where 1 Rue du Mail 75002 Paris 
w«ta w w w.so leil noi r. n et 


/ 

oleil Noir was formed in 2000 
under the leadership of its two 
founders, who shared a common 
vision: to provide brands and 
their audiences with interactive, 
Immersive experiences. 

Experiences that tell stories, that 
bring unique moments to life for 
their users. 

For the past four years, Soleil 
Noir has been working with N espresso, an inspiring 
brand with which it has established a solid, trust- 
based ^tejtotiship. The more successful 
achlevemlffls are ^ clear sign of the relationship: they 
include VariafrortS 2010 and the cute Pixie, adapted 
for multiple supports (web, mobile and Apple's brand 
new ad format. iAd). 

In addition, Soleil Noir have been working with the 
LV'MH Group and more specifically Dior, for the past 
five years, as well as Disney Television, the Danone 
Group (Evian) and Samsung Electronics. 


Soleil Noir can diaim over Len years of experience in 
the industry. CEO and creative director Benjamin 
Laugel gives an insight into the story behind the 
agency. “It's a long and exciting story, of coursel Soleil 
Noir is a chemical reaction where the key ingredients 
are enthusiasm, hard work, and - as is the case in any 
kind of success story luck. It all started with a 
meeting, of course, but not just anywhere. It was on 
IRC, the forerunner of modern social networking 
systems. Gradually, during a lively discussion about a 
VCD encoding codec, we got our first website creation 
gig, which was given to us by a small music label. 
Hostile Records. 

It was a website that quickly grabbed people's 
attention due to the innovative choice of Flash and its 
media capacities At the time, it was a long shot, but 
we realised that it 'was a wise choice because we 
consequently worked with the entire EMI Group, 
coming up with such gems as Ben Harper's site, the 
site for the EMI record company a site for Snoop 
Dogg, and one for Placebo. 


profile- 


_37 



















Soleil Noir timeline 

Established 2000 

Fo under s Benjamin Laugel, Olivier 


A mixer modulo for Roudoudou 
resulled in a panicky p:ione call from 
Virgi n's network ad mi n islrator. since 
he couldn't fathom how it could have 



The first production for 
Host i is Records was created 
using Flash 3 -ar Lists' 
sheets, clips, retransmission 
I of live cancerts. and chat. 


The Disney Channel's 
day- to-day broadcast site. 
Zapping Zone, 
incorporated a number 
of modules and games. 



Hostile Clan, Soleil 
Noir's first site to earn 
an FWA award, was a 
t remendous source of 
pride for the team. 



The fourth version of 
Soleil Noir's site 
surpassed resolution 
expectations held at 
the time. 


Soleir Noir completely 
revam ped t he game en gi ne for 
the first My st flash game, and 
created My st 4 More than 10 
million fans approved! 



The Proactive 


site was the 

first US brief 

■At 

j 

for Soleil Noir. 


and a success. 


#f An agency’s site is essential. It gives a 
first impression to a... client or someone 
who might wish to join the company if 1 


"These websites strengthened our enthusiasm for 
animation and for aesthetically pleasing stuff. Indeed, 
it's hard to offer half-arsed site to a legend or to a 
group that you admire." 

The agency uses a suitably sophisticated moniker. 
Laugel reveals how the name came about and how 
easy it was to get a matching domain. "The name 
Soleil Noir (meaning Black Sun) effectively reflects the 
mindset of the company back in the beginning; 
various points of view, shaping a shared ambition. We 
got into a lot of discussions, sometimes quite heated 
ones, but they always led to magical solutions. 


"Soleil Noir is an oxymoron that is a perfect 
description of these opposing natures, our 
personalities and our exchanges. 

The chance to use the mysterious and intriguing 
side of a name that was also being used for other 
digital structures at the time was also a compelling 
reason for us to choose the title. We wanted to set 
ourselves apart. 

“Next was the domain name. After we r d come up 
with a brand name, we were lucky enough to get it 
registered as a .com, .net and _fr. Back then, it was 
much more common to get an available domain 


name that reflected your original idea. This is no 
longer the case these days, and it’s getting harder and 
harder to avoid punctuation quirks that are rather 
pointless for the entry of a domain name. So you've 
got to have a lot of imagination." 

An agency’s web presence is the primary point of 
access. Laugel tells us how important it is to the 
company and reveals that a new version of the site is 
on its way. 'I almost feel like playing my trump card 
given that our site is no longer in any way up-to-date. 

"An agency's site Is essential. It gives a first 
impression to a potential client or to someone who 
might wish to join the company. 

“In my opinion, it needs to be rather neutral in order 
to showcase our creations and to describe, as 
effectively as possible, our know-how and all the work 
that’s been done. 

"Case studies are key components when we 
promote our projects and our values. It's a bit like 


38 profile 














































' r he lau nch oE t he K espresso 
Variations site won the 
company more than ten 
international awards - a 
flagship accompli shment. 


Soleil Naif'S 2012 
greeting card showcases 
every thing the brand, 
works for. loves, and 
believes in 


Experience 159 was 
SNTs first FWA site of 
l he motif hand Adobe 
Europe's winner for 
design in Milan. 


The idea for Samsung 
HighliEe was 
concealed on digital 
user experiences 
reflecting those in life. 


TheNespresso Citiz 
site was the start oEa 
fruitful collaboration 
between the brands 


Soleil Noir went 
mobile with the 
Dior iPhone app. 
The Dior world in 
your pocket. 


that Is stlU strong. 


Number of 
employees 



what happens in the ’behind-the-scenes' portrayals of 
films. We need to come up with things that are both 
interesting and inspiring. 

‘Were going to redo our website soon and pay as 
much attention as possible to the content that we're 
going to be creating in order to promote our work. So 
this is a 'project within a project', as we intend to come 
up with components solely designed to describe and 
showcase the actual project in question, 

‘We've also invested in social media and are proud 
of amassing a community of nearly 4.000fans on our 
Facebook page and nearly 6,000 followers on Twitter. 

'Our approach to communication is simple. We talk 
about our projects, about life at the office and about 
trends and other creations that matter to us. 

“It's this level of interest displayed by our fans in 
what was going on within and outside our offices that 
inspired us to create our greeting card, A playful year’ 
- vi m eo.co m/1846674Q 


Clients are an essential ingredient in the success of 
an agency. Lauge) stresses exactly how important 
they are and how Soleil Noir is now in a position to 
choose who they work with. ‘Clients are more than 
just the lifeblood of the agency. They're the ones with 
the power to make or break our passions, trigger our 
moods, make us laugh and cry and, in short, 
determine our emotions on a day-to-day basis* 

'At Soleil Noir, we don’t "do’ sales strategies. We get 
a lot of requests, and have the luxury of being able to 
choose with whom we wish to work. Regardless of the 
size of our projects, we always tackle them with the 
same amount of enthusiasm and Lhe same desire to 
come up with something original that inspires us. 

"Ultimately, the clients who want to work with us are 
frequently clients who share our qesires, who want to 
be daring and exceed certain limitations, yet always 
with the level of impeccable quality that has 
established the agency’s reputation." 



M What platform other 
than Flash would allow us 
to create real experiences... 
while making It possible 
for us to blend images, 
sound, video and 
interactivity easily? » 


profile 


39 













































i I We have an organisational structure 
that remains constant and ultimately 
ensures a high-quality project §§ 


Soleil Noir has a well-established reputation which, 
as already mentioned, allows them to choose who 
they work with. Head of production Olivier Marchand 
defines which type of project they like to be involved 
with. “I often say that there are no bad brands just bad 
ways of handling them. It's not so much that we pick 
and choose the brands with which we work, but 
rattier we welcome clients with ambitions and ideas, 
and especially those who place their trust in us and 
give us a chance to wow them. 

“We have lots of projects, and the size of a project 
has never scared us. As proof of this, we've just come 
up with an entire digital business strategy for our 
client Nespresso. This namely involves the creation of 
mobile platforms (iOS, Android and mobile web), as 
well as a corporate transactional web platform for 50 
markets in 26 languages. Its not a question of size, but 
rather of know-how, imagination and the means of 
attaining a certain degree of perfection." 

Projects are - by their very nature - extremely 
different from each other. Marchand gives an insight 


into the lifecycle of a typical project. 'Each project is. 
by nature, distinct. As we act in accordance with each 
product, specific launch dates, the number of markets 
that should be considered and the concept in 
question, we really never operate according to a so- 
called typical timeline. 

'However, we have an organisational structure that 
remains constant and ultimately ensures a high- 
quality project. The processes, along with their tods, 
combined with creativity and perseverance, are a 
guarantee of success. 

“This involves the brainstorming stage, in which 
everyone, even the youngest Interns, may participate 
actively. It's a fact that, as far as digital technology Is 
concerned, and owing to the openness of this 
medium,anyone can have the right idea since all of us 
are navigating through that realm every single day. 
What follows is a question of culture, knowledge and 
the big picture. 

“The preparation stage Is crucial for the project. We 
spend a great deal of time coming up with the 


medianios, challenging the technical aspect and re 
examining what we've done. 

Then we follow what we might call a 'traditional 
cycle' that entails a seduction phase (the first layouts), 
organisation (timetables), industrialisation 
(wireframes) and finally we work to persuade the 
client of the merits of our solution (if this step is 
necessary, of course!}’ 

As with any project the creation tools are a matter 
of preference. Marchand explains that Soleil Noir has a 
special relationship with Adobe, but still needs to find 
the best solution. “We mostly use Adobe software 
because we’ve had a special partnership with Adobe 
for nearly five years now. 

'A certain amount of organisation is required for 
creative tasks, which is why our processes are also 
supported by software solutions lake Merlin, Axure. 
activeCollab and ConceptShare for reviewing layouts. 

“Were constantly striving to optimise our processes 
and thus to find the best possible software solutions 
for ourselves and for our clients.' 

The Flash platform is a key component in Soleil 
Noir projects. Marchand extols its benefits, but also 
adds a cautious note. "What other platform would 
allow us to create real experiences without having to 
worry about browser versions or platforms, while also 
making It possible for us to blend Images, sound, 
video and interactivity easily? 


40 profile 






















## We mustn’t put our eggs in one basket 
and focus on one software solution !IP S 


‘For more than 12 years. Flash has allowed us to 
breathe life into most of our projects. 

‘However - and we're very aware of this - we can't 
and mustn't put all our eggs in one basket and focus 
on only one software solution. Rather, we need to use 
the resources that allow us to accomplish our goals 
and fulfil the ambitions that we share with our clients." 

HTML5, CSSS and jQuery are seen as the 
technologies that will build the web over the coming 
years. Marchand gives an Insight into how certain 
technologies are going to coexist ‘AH technologies 
that allow us to make our ideas a reality are worthwhile! 

'HTMLs return to the forefront as a tool used to 
create digital experiences is a good thing, with the 
ultimate goal being the vision of a single navigation 
mode on all supports. What's currently being 
observed, though, suggests that this goal is 
unfortunately pretty far-off. The multiplicity of screens 
and certain proprietary restrictions, such as those 
found on Android or the iPhone, lead me to believe 
that this project is even less within reach at the 
present time. 

1 feel that, rather, we're going to witness a smart 
coexistence based on the projects themselves rather 
than submitting to an arbitrary selection of 
technologies. Flash's day In toe sun isn't over yet as 
long as Adobe permits it.' 

Social media has reached the point where it is an 
integral part of any digital campaign. Marchand 



WEB - . www.soMInolr.net 


FOUNDERS. _ Benjamin Laugel - CEO. 

Olivier Marchand CP 

YEARFOUNDED., ____ 2000 

CURRENT EMPLOYEES . .23 

LOCATIONS _____Paris, France 


SERVICES 


> Digital Strategy 
>ArtdirecUon 

> Web development 

> Mobile development 

** m. » m. m. — m* mm- m* m* m. * m-* 


explains how important it is in contemporary projects. 
Trying to imagine a project without incorporating 
such tools is simply no longer possible. 

'These tods let us give users the chance to Interact 
and to embrace our platforms. 

'Whether this is achieved by personalising the 
experience via Facebook Connect or by merely 
sharing a message, this approach allows us to 
continue to bring a story to life and to go beyond its 
Initial context. Our greeting card 'believe in’ Is still 
being spread spontaneously, without prompting, 
seven months after its launch. 

'Websurfers have now taken control of brands, so 
it's up to us to write stories that inspire and entertain 
them, it's up to us to write stories that are increasingly 
innovative and fun. It's a real challenge!" 

The mobile revolution continues apace. Marchand 
offers his thoughts on how Important it Is. and even 
suggests that some services demonstrate we can live 
without websites. "Indeed, mobile has become a key 
factor for many experiences, as we're now able to 
access rich content easily. Gone are the days of 
newsletters that didn't accomplish much ot anything. 
Consumption of video and social games and photo¬ 
sharing has shaken up this model, and mobile has 


KEY PROJECT 


DHJANA - Nespresso 

-2011 

www.nespresso.com/dhjana 

Nespresso has launched Dhjana, its new 
award-winning limited edition 100 per cent blend, 
sourced from the Nespresso AAA Sustainable 
Quality™ programme, A blend composed of four 
origins (India, Costa Flea, Brazil, Colombia), 
discoverable by navigating through a unique tree. 

The technologies behind the site were Flash CSS 
for the frontendand Flash Builder 4 and PHP for the 
backend. Besides the somehow small structure (a 
few pages with one level of content each), Soleil 
Noir wanted to create a real forest ambience, so it 
used laigec-than-usuai Images to simulate this 
feelln g. To put this into context, if the website had 
no scrolling, it would need a 4,000 x 8,0Q0px 
resolution-approximately 16 displays at1.680 x 
1,050. This, added to the different layers of 
animations and contents, and localising the 
content in mote than 30 languages, required a hell 
of a lot of work to optimise the loading time and 
overal I performance. 


become a true passport to its own digital life. An 
experience without a mobile component Is now 
considered outdated, and services like Instagram and 
Path show that we can actually do without websites. 

“We currently advocate toe development of native 
applications for both Android and iOS platforms, while 
also providing a mobile web version of a site that’s 
available to everyone. 

For us, the user experience Is key. and this Is the 
best solution to ensure it. But ours Is a rapidly 
Changing world - we've got to adapt to these changes 
and stay attentive if we want to keep offering the best 
possible selection. 

"Responsive design and mobile first have become 
essential points to consider during the design phase. 
The related development time is. however, still too 
lengthy for the advertisers’ liking." 

Finally, the success of any agency is very much 
dictated by the people who work for it. Marchand 
offers some sound advice on the traits needed to 
succeed in the industry. “Be curious, be enthusiastic 
and really want something. Those are always the best 
pieces of advice that someone could offer. Without 
hard work, risk-taking and a sense of humbleness, 
nothing is possible. 

Questioning yourself, challenging your own ideas, 
and establishing and defending your choices are 
complicated, often painful tasks., but that's what we do 
on a daily basis, and this is clearly the only way to 
achieve a convincing result Work hard/play hard are 
the keys to success I' 



profile 41 

































m ■ j m 

Eric Meyer is considered by many as 
the go-to expert on CSS. Web Designer 
caught up with him to discover exactly 


what his thoughts are on the current 
state of CSS, and what the future holds 


feature 


C SS and Eric Meyer have gone hand-in-hand for 
over fifteen years. He is an internationally 
recognized expert on the subjects of HTML and 
CSS - what this man does not know about CSS is 
not worth knowing. Eric is an established author 
and has written a number of acclaimed books including 
the self-titled Eric Meyer on CSS, More Eric Meyer on 
CSS, and more recently he has added his expertise to 
the Smashing Book series with Smashing CSS, Beyond 
the written word, Eric is a prolific speaker and can be 
found headlining many a web conference. Eric Meyer is 
undoubtedly the king of CSS. Long may he reign. 

You've been at the forefront of the CSS revolution fora 
long time now. How do you rate the latest version of the 
specification and what do you think can be done fo push 
it forward? 

The stuff that's being worked on right now is really hard 
but really awesome - really powerful layout mechanisms, 
visual filters. useM but processor-heavy selectors, and so 
on. It really feels like we've solved, for the most pari most 
of the basically easy problems, like setting solid colours or 
having background images or defining borders. Even a lot 
of the medium-hard problems have been dealt with. Now 
were moving into the really rough territory, where it's an 
incredible challenge to create powerful, complex toofe that 
can still be described fend thus written) using simple 
syntax. Decisions of any sort can have huge tong-term 
consequences, so it's tricky to navigate. So I rate the latest 
worik very highly for ambition and potential. Forward 
progress may be a bit slower than we've seen lately, but 
there is need for caution. And, of course, any complex 
system is at least as hard to implement as it is to define, 
Browser teams are limited in terms of time and resources, 
so some things will be deferred, and that will be frustrating, 
Boar in mind what I've always said, though, "Never put 
down to malice what can be more adequately explained 
by resource constraints' 

Browser support Is a key factor behind the adoption of 
the latest CSS standards Vendor prefixes help widen 
support but why is it that alt browser vendors cannot 
agree on a standard code of support? 

They can. and often do. The devil is always in the details, 
and in the assumptions programmers make. For example 
the CSS specification currently says of box and text 
shadows: 

‘A non-zero blur distance indicates that the resulting 
shadow should be blurred, such as by a Gaussian filter. The 
exact algorithm is not defined.." 

Right there is an inconsistency waiting to happen. Yes. 
the spec goes on to give an approximate guide to how 
shadows should be biurred. but the algorithm is not 
precisely defined, so it's up to each browser team to devise 
their own algorithm. What are the odds they'll come up 
with precisely the same formula? You might think the 
answer is to define a precise algorithm, but what happens f 
later on a serious flaw Es found, or if a better algorithm is 
devised? CSS has long employed intentional ambiguity to 
allow browser makers to experiment and find the best 



K The only way to have consistent 
implementations is to have one browser ” 


ways to do things. There's also the problem of interaefon. 
CSS can define the behaviours of properties too. bar. and 
baz. and browsers can implement them all so that they 
consistently pass all their individual conformance tests, 
What happens when they’re used together, though? You 
could get wildly different results just based on slightly 
dfferent resolution code deep inside the various rendering 
engines say. if baz is handed before bar in one browser, 
and that order is switched «n another. And that's just with 
three properties interacting. How many properties did you 
have in your last style sheet? Basically, the only way to have 
perfectly consistent implementations is to have one 
browser, We had that once, when there was only World 
Wide Web. the browser Tim BemersLee wrote. But it was 
Mosaic that ignited the popular web r and Netscape that 
shot it into orbit Anyone who thinks browsers are hombly 
inconsistent now should look at ttiat period of history The 
divergence was extreme, bad enough that the same page 
would look wildly different across browsers, and it 
happened regularly. Madness! But now we know better. 

The introduction of high-resolution displays has 
brought a new challenge to designers and developers. 
Pixel ratio is the current solution, but do you think there 
is better answer? 

I honestly think that pixel-based images are about to 
become an endangered species. Anything that can be 
vectorised will be - and I remember seeing demonstrations 
in the Nineties of vector formats for photographs and the 
like. It would not surprise me in the slightest to see those 
ideas make a comeback. 

Web fonts have revolutionised web design, but how can 
the standard move forward and what eise does it have 
to offer? 

I'm not a typographer, so that's hard for me to say. I know 
that type enthusiasts are all stated about ideas like the 
ability to define ligature pairs and finer-grained control aver 
kerning and the like, but when they talk about that stuff I'm 
like your grandma listening to you talk about work - there's 
a lot of nodding in pauses for breath and me saying. 'That 
all sounds lovely, dear. Would you like another cup of tea?" 
I'm not trying to say that those things are irrelevant or 
useless. They arent! They're just in a realm that I don’t really 
grasp, I mean, I'm the guy whose results on 'which font is 
this. Anal or Helvetica?' quizzes are statistically 
irxlistinguisliable from random guesses, Which, let's be 
honest is what they are. 

Responsive design is a key component of the site- 
building process. However ,; currently it is in the early 
stages of its lifecycle. How do you see responsive design 
evolving in the short-term and long-term? 


It’s a great question, and one I think we’ll all have to answer 
together We’re still figuring out what works In what 
circumstances and finding out how old assumptions by 
browsers are clashing with the aims of responsive design 
- like, how browser pnefetching (which is meant to speed: 
up browsing) means an enormous increase in page weight 
when you're pointing to a tot of different media-specific 
style sheets. Responsive design is also pushing the edges 
of questions few of us thought about before; can the same 
content serve equally well in multiple media? Can the same 
page be useful cross-platform? I personally think the 
answer is, 'sometimes', but maybe I'm wrong. Maybe, as a 
result d responsive design, well find new and better ways 
of presenting content across all media. It has that potential. 

The CSS standard is a constant work in progress How 
long do you think it wilt be before CSS4 hits the web and 
what would you like to see in it? 

We can! really talk about a CSS4 because there are no 
monolithic CSS specs. The last d those was CSS21, and I 
doubt well see one again. Nov; we have dozens of CSS 
modules, each proceeding at its own pace. Take Selectors 
for an example; Level 3, what we might call CSS3 Selectors, 
is a full recommendation now. and Selectors Level 4 is well 
underway. In the meantime, a whole bunch d Level 3 
modules are wandering around in working draft phase. 
.Some of them could still be there when Selectors moves to 
Level 7. So now we have to talk in terms of the next period 
of time. I think aver the next year or so we’re going to see a 
ton of movement in the area of advanced layout, finally, 
with modules like GridLayout, FlexBox, Regions, and 
Exclusions. Those four together could create an enormous 
shift in the kinds of layouts we create as well as how we 
structure them. CSS Filters are very interesting, too, though 
I'm not sure how popular they are to implementers other 
than Adobe, and as I said before, Selectors continue to 
barrel ahead. I'm also hoping to see some advances in 
colours and backgrounds, but the priority right now is 
layout which is really where it belongs, We've needed this 
stuff since CSS was first written, 

Finally on a more personal level , are your goals the 
same as they were five years ago and what do you think 
you will be up to In five yeabs time? 

Broadly speaking, yes. they are, and l think they will be. My 
goals have always been to explain how to make websites 
with CSS by explaining how CSS works, and to thus help 
the whole community advance the web. It's sort d iike 
being a woodwork teacher who shows the class how to 
use all the tools safely and properly, so they can produce 
whatever masterpieces their hands and vision can bring 
forth, I could do that my whole life, I think, and thereby 
count myself luckier than most 


feature 


.43 










E very designer and developer will have their 
own set of tools that sit with the must-have 
big guns. Here we present an essential 
selection of tools as chosen by a wealth of 
industry experts. There are tools for every 
element of the design process, from concept to 
completion. Imp rove your workflow, build rapid 
prototypes, unleash killer code, create graphical 
gorgeous ness, and test, test, test, All the big boys are 
included. Word Press, jGuery, Google, GitHub. Sass, 
plus a host of essentials But. as always the devil is in 
the detail and the experts have revealed a multitude 
of tools that will become constant companions. 

OPEN STREET MAP 

www.openstreetma acorn 

OpenStreetMap is a collaborative, open source 
alternative to the commercial mapping systems offered 
by Google and Bing. When used in collaboration with 
Open Layers, Open Street Map is capable of producing 
some very sophisticated mapping applications, and is 
often more up-to-date than its rivals due to the 
crowd-sourced nature of the cartography. 



GOOGLE ANALYTICS 

www, a nalytics.goo g le .co m 

Google Analytics is an easy-to-use yet powerful " 
reporting platform. It works by tracking visitors to 
your website through a tiny bit of JavaScript 
inserted into your page's HTML. The resulting 
data collected is presented through a series of 
interactive charts and reports that allow you to 
analyse metrics such as user-by-country, 
page-visits by age, or search terms by landing 
page. The ability to tie in with the Ad Words 
campaign system (paid-for text adverts that 
appear alongside organic search results on 
Google), analyse return on investment and visitor 
conversion ratios, as well as recent innovations 
such as in-page analytics and real-time data 
make this a superb package; all the more so as a 
result of its zero cost priceteg! 




ADOBE PROTO 

www. a dobe.com/protQ 

Design prototypes for your web project directly on your 
iPad or Android tablet creating different page elements 
with gestures- The output can be linked together to 
create a fully interactive prototype and sent to 
Dreamweaver with the basic wireframe code crested 
for you, once approved by the client. 



ADOBE DEBUT 

www.adobe.com/debut 

Adobe Debut is a presentation app for your tablet, 
created to allow designers to showcase their designs 
directly to the client in a polished, slick style. The app 
supports artwork from Illustrator, Photoshop and 
InDesign without the need to convert files ahead of 
time. Currently only available for Android devices. 
Adobe promise support for iOS is on the way. 



320 AND UP 

www. stu ft a nd non sense co.u k /project s/320a nd up 

The 320 and up responsive boilerplate is a tool that has 
been used by many designers to create a 'mobile first' 
site. The tool has changed as its creator Andy Clarke 
has modified to ensure that the latest version of the 320 
and up is better than ever, If you haven't tried, make 
sure that you do and soon. 



OpenWYSIWYG 



www.gpgnwe&wflrs.Hm 

An extremely easy to install rich text editor written 
entirely in JavaScript 


CKEtutor ^editor,cam 

A fully-featured and supported rich text editor with 
plug-in architecture 

BrowserStTOts www.browsershots.ora 

A simple way to view a preview of your site in 
many browsers simultaneously 

If This Then That OFTTT) ifttt.com 

Program simple actions in response to tweets. 
Instag ram photos and more! 

Maiichimp www.mailthimE.CQm 

Create, manage and measure email newsletter 
campaigns with ease 

SumoFaini www.sumopaint.com 

Web-based image editor with a bevy of features 
and functionality 

Sencha Touch 


w w w.sencha.com/prod ucts/touch 

Very flexible JavaScript framework for building 
HTML5 mobile web apps 

PhoneGap wmphpngqaPiCpm 

Use web technologies to develop and create native 
apps across seven platforms 

Magento ym w.magaitocftmmer 

A fully-featured and very capable open-source 
eCommerce platform 

QpenCart www.opencart.com 

Free, easy to install and feature-rich open-source 
eCommerce platform 

Generate dummy placeholder text for your 
projects quickly and simply 

WoliramAlpha API 

erg^w s ti.wgjf ram alcha» wm/g i?i 

Connect with and integrate scientific charts, 
projections and data analysis 

OpenID openid.net 

Single authentication framework for use across 
multiple websites including social media 

Ruby on Ralls rubvonrails.ora 

Useful PHP framework for rapid development of 

applications with common functionality 

Less Framework lessframework.com 

CSS grid system designed to work across multiple 

devices responsively 

MediaCore madiatflifcfiam 

Impressively capable Python-based video and 

multi-media Content Management System (CMS) 

imageAipha wmflnyminiiwm 

A very handy tool with which you can reduce 

24-bit PNG file sizes 


CSS3 Button Maker 

^wffiC55tricK5,tgm/aymple5/ButLpnMaKsr 

Chris Coyier's tool for creating image-less buttons 
with pure CSS3 

Procssor 

A web-based service for reformatting your CSS 


feature 


.45 























































200 ESSENTIAL TOOLS AND TRENDS ► 


github 

O SOCIAL CODING 


GITHUB 


wwwaithub.com 

GitHub is the 


immense ty-popular 


hosting and code sharing service, currently used bv 
more than a million people. GitHub hosts software 
development projects that use the Git revision 
control system. The power of GitHub comes from its 
collaborative tools and capabilities. It not only offers 
a place to share and fork code repositories, but also 
Integrates wikis, issue tracking, arid code review. 
GitHub has become the Industry standard for 
making code projects public and getting feedback 
from potentially thousands of developers all around 
the world. 



FONT SQUIRRELS ©FONT-FACE GENERATOR 

www ton tsqu I rr el.com/fmtf ace/qe nerator 

For a long time, using custom fonts on web pages has 
been a big challenge for web designers. Font Squirrel's 
@font-face generator is a big help in this regard. After 
you've chosen a font with appropriate licensing, it will 
give you the necessary cross-browser CSS. 



GOOGLE WEB FONTS 

www.gooqle.corn/webfonts 

Googles new font repository is an easy way to add 
custom fonts that are free for commercial use. and can 
be embedded using a single line of code. Download 
from a selection of hundreds of fonts in different styles 
and scripts. 




wTirthtciiQiicniWlid. 


CfiHrrpv wUii'di ffiatar IMtht Dm* IW IlM *vU QuMt i/d JjkL 


ti Vd* mT Ana 



ruW fancit Fffw for tlu QKirrn *ni 


. feature 


CONDITIONAL CLASSES 

w w w.pa u 11 rish ,co m/2QQS/conditl o nal-stylesh eets-vs 

css hacks an 5 wer-nei th er 

Extra HTTP requests are bad for page speed. So instead 
of targeting old versions of IE with separate stylesheets 
(which are also harder to maintain), use Paul Irish's 
conditional classes method instead. It's dean. easy, and 
it validates! 







STACK OVERFLOW 

f—| stackoverfiaw w ww.stackoverfIow.com 

It's tough to avoid Stack 

Overflow when Googling for solutions to coding 
problems. It's a fantastic community that's invaluable for 
collaborative problem solving. It should be one of your 
go-to resources for getting your questions answered by 
knowledgeable developers. 



GOOGLE READER 

ww w.g Qog le.com/reader/ 

Print resources are great for 
getting concepts in your 

Reader ha3d ■ no1:hi n s 11 ke 

J onl in e sources for keeping 
up with trends, coding tricks, 
and more. Google Reader (or any RSS reader) will help 
you stay up-to-the-minute on hundreds of feeds, for a 
nice complement to offline reading. 



Goatfk MM m wk * *•- i 



YEPNOPE.JS 

vepnopeis.com 

While Modernizr can help you detect features, yepnope 
lets you asynchronously load different scripts based on 
your feature detection results. This works great for 
avoiding loading poly fills unnecessarily, helping your 
pages load more efficiently, 

yepnope.*. 


SASS/COMPASS 

w ww-S ass- la nq .cam 
www.compass-stvle.org 

If you haven't started 
preprocessing your CSS, 
then get on it! The 
com bi nation of Sass and 
Compass brings real programming techniques to 
stylesheets, making your CSS much easier to code 
and maintain. Sass extends CSS by adding nested 
rules, variables, mixins, and much more. Compass 
helps you avoid unnecessary repetition *n your CSS 
by providing reusable patterns for CSS3 vendor 







































































CODEKIT 

ww w.incidentBZcpmfcqd ekit 

CodeKit is gaining traction as one of the hottest apps. It 
helps you process files using a number of different 
time-saving tools - Less. Sass. Stylus. Ham!, Coffee Script. 
Compass, and more. But it does so much more than 
that. And best of all? No command-line abilities required. 


WHEN CAN I USE... 

wwwxaniuse.com 

This is a great online resource for finding browser 
support information on virtually anything. It's kept up to 
date and includes info on new CSS3 stuff. HTMIL5 APIs, 
and other miscellaneous DOM features. It's even great 
for browsing just to find out what's new. 



E 


JSFIDDLE 


JSFIDDLE 

www, | sfiddle.net 


Every developer needs a place to experiment with, debug, 
and share code publicly, without all the overhead of 
something like GitHub.|sFiddle has tons of great features. 


and a nice, dtean. usable interface. 


compass* 

oref xed code, CSS typography, and mere A It ny ugh 
tic sc too s a'c command - ire based, desigrers who 
aren't quite so familiar with the coir mend-I he car 
use one of the available GUI apes (for both Mac and 
Windows) that automates these tasks fo-you. So tne 
only real learning curve is related to learning the 
syntax, which has quite a few differences from 
traditional CSS. 


compass 

n an CSS Aatf*of>n$ 

Frmneimortt 




PSEUDO-ELEMENTS 

w w w.n ico lasq aliaq her com/an -in trodu c tion-to-css- 

pseu do-e I erne nt- hack s 

Pseudo-elements, recently promoted by a number of 
developer bloggers, are a CSS feature that can do so 
much with so little code. They're useful for decorative, 
non-essential content, and the numbs - of things possible 
with them is only limited by your ability to innovate. 



JSLint 


JSLINT 

www.islint.com 

JSLmt is Douglas 
Crockford's code-quality checking tool for JavaScript. 
You might not agree with all of JSLinfs strict 
recommendations, but this is an essential tool for 
JavaScript developers who want code that’s up to 
standards and easy to maantain and debug. 


: 

: 

; 


: 

j 

: 


YUI Library YYVYVY.Yyjlitir^rY^Bm 

Yabool's open-source JavaScript and 
CSS Framework 

Nomialize.css 

Nicolas- Gallagher's modern. HTMLS-readv 
alternative to CSS resets 

YSIowwww.develPPer.vahoo.com/vslQW 

A browser add-on that analyses webpages for 

speed improvements 

HTML5 Cross Browser Polyfills 

w w w.a i Ih u b. eom/M odern 'art Modern iz r/wiki 

A huge list of polyfills for tonnes of brand spanking 

new web technologies 

W3C CSS Validatior Service 

.iigsaw.w3.prfl/cs5-validator 

The WSC's tool for checking for invalid CSS 

HTML5 Please www. html 5 a lease ,co m 

Helps you to use the new HTML5 and CSS3 

features responsibly 

Isobar’s Front-End Coding Standards 
LiaJsobarxQriy^Uudiirds 

Pillars of front-end development are outlined in this 
extremely useful guide 

wave w w Lr-aim 

A web accessibility evaluation tool from WebAlM 

Jonathan Snook's great guide to scalable and 
modular CSS 

Wufoos Current State of HTML5 Forms 

www.wufoo.com/html5 

A detailed guide for support of new HTMlS form 
features 

StatCounter Global Stats 

oa.statCQunter.cQm 

Worldwide, up-to-date browser and OS stats and 
trend charts 

jQuery Boilerplate 
w w w. i qli sr yI?q i I&rp I a le.com 

A jump-start for your jQuery plugin 
development 

OperiCrypt IP Geo -Location API 
w w w.opencr ypt.com/iD-lQcati on .php 

Get your visitor's location in the world from their IP 
address 

Flowplaver fiowalaveroro 

An easy-to-implement media player to show 
self-hosted video 

TinyMGE ynvmi:£.inQAiacode.£oni 

Rich Text Editor with extensible platform for 
additional plug-in functionality 

Subtle Patterns sutniepatterns.com 

A gallery of free elegant background patterns 
Reponsivepx www.resDQnsivepx.com 

An easy-as-pie way to test where your responsive 
design breakpoints are 

Espresso 

m a orabb i t.com/esp ressja 

The powerful Mac-based text editor with 
CSS3 support. 


feature 


47 

















































200 ESSENTIAL TOOLS AND TRENDS ► 


ADOBE SHADOW 

wwwadobecomyshadow 

Adobe Shadow makes t easy to prototype and 
test, on your mobile devices while building on 
your desktop computer. The concept is very 
simple - press a button on your computer and 
your devices will automatically navigate to and 
load the page you're working on. providing 
hands-free access to a real-life view of how your 
work renders on each device. 

As well as making it simple to automatically 
navigate your device to the page you’re currently 
working on. Shadow allows you to remotely 
inspect and debug individual devices, making it 
easier to track down and fix bugs than by 
traditional methods. This is an example of the 
work coming out of the Adobe Labs playground, 
and offers a genuinely useful solution to an 
increasingly common problem - designing for 
mobile devices. 



oocss 

www.qithubxorn/stubbornella/oocss/wiki 

Object-oriented CSS is a CSS coding technique 
popularized by Nicoie Sullivan. Even if you don't agree 
with all the principles and suggestions of OOCSS. you 
should definitely understand the concepts. It's sure to 
make your code cleaner, faster, and easier to maintain. 


fcj BACKBONE.JS MONEJS 

^ -*— www.backboneis.ora 

Backbone.is is a web app framework that helps you 
structure your JavaScript using the well-known 
Model-View-Contrdler CM VO pattern. If you want better 
structure and maintainability in complex apps. it's well 
worth looking into the power of Backbone. 



TWITTER BOOTSTRAP 

www.t witle r.g ithu bxom/boot stra p 

Bootstrap is a starting framework for web sites and 
webapps that includes ready-to-use HTML. CSS. and 
JavaScript-based modules for common Ul components 
and interactions. Bootstrap helps you avoid ran venting 
the wheel, and lets you focus on innovation. 



^ BACKBONE.JS 

*r _ 


—-■ - - 

1 r- 



ADOBE BROWSERLAB 

browse r la h.ad a be.coin 

BrowserLab is an easy way to get static screenshots of 
your web projects as they appear in various browsers 
on different platforms. It's not a full-function way of 
testing your interfaces, but it's definitely an option for 
getting a peek at browser versions you don’t have 
immediate access to, 



THE EXPERTS CHOICE 




BIN FRAIN 
Freelance front- end 
developer 
Sass and Compass 

iYiv^ l irv l y l L i- i 'ifi r if? u&n tv'i'ViY romaM item 

It's hard to imagine writing vanilla CSS once 
you've got to grips with Sass and Compass. 

Sublime Text 2 

nute amply the best all-round text editor 
available. Cross-platform, infinitely extensible 
and incredibly fast, 

Adobe Shadow 

wwiAdabsaahte 

Check your design/build across multiple 
devices without having to dck refresh 
on each. 



iV JONATHAN MITCHELL 
if pup Developer at Adeo 


Iti 1 

^ vfMv.aetfrebua.cof7} 

nlbbler 

nessus 


t? 


ALAR A MILLS 
Product designer 
HTML5 Elements Table 
Poster wvM.A!3faMiif££Qtrt 
W3C- Markup Validation Service 

W3C - CSS Validation Service 


Pam Turner 
Sr Web Designer at Adeo 
Notepad++ 

www nfitpnad-nliJS-nfiis.&rQ 

Google Chrome 

yvwwffttftte mm/rhmrr^ 

Twitter Bootstrap 


. feature 




BEN TRUYMAN 
TecbLead at Critical Mass 
Adobe Shadow 

witmtidchfLCGn-ifthudcvs 

ResponseJS 

wvw/.rtiSDonseis.com 

Font Awesome ferfermmfigtfMmy 


v 


BRANDONRJONES 
Web designer 

CSS Hat 

wtow.csstetcom 

l Subtle Patterns 

\ YmMMtMimtm 

; Foundation 3 




CHRIS MILLS 


Opera Dragonfly 
mmsKi^cDEnldmnnn^ 
: The Opera Mobile Emulator 
\ v^.oDera.com/tievebD&/tcc}^mobite 

\ Social networking 

i ym/Mterton} 














































































CSS HAT 

www.csshat.com 

It you're still designing your layouts almost completely 
in Photoshop, and you're using C553 heavily, then CSS 
Hat is a must-try tool. Simply put, this Photoshop add-on 
will convert your Photoshop layer styles to CSSS that 
you can drop right into your text editor. 



Why they love CSS Hit? 


MODERNIZR 

w w w.mod ern i zr.tom 
Dealing with cross-browser 
been an ongoing battle tor developers since the 
days of the Netscape-IE browser wars. Modemizr 
makes these inconsistencies elegant to work with. 
This open-source JavaScript library dynamically 
adds helper classes to a document's <htm!> 
element, so you can have separate CSS rule sets 
for non-JavaScript users or users whose browsers 
don't support many new CSS3 features. But 
primarily. Modernizr helps you to easily detect 
support for new web technologies, including 
CSSS. HTML5, and miscellaneous DOM features, 
and then deal with the results (either support or 
non-support) accordingly. 







omit m mm m 



CSS3 MEDIA QUERIES ^ 

www.w3.org /TR/css3-med1aau eries 

Media Queries are at the heart ol what e 
known as the responsive web design movement 
Media Queries let you apply different styles to a web 
page depending on a number of factors. Primarily 
developers are using Media Queries to target 
different devices based on browser width. You can 
also target device width, orientation, aspect ratio, 
and more. Media Queries can even be combined 
with CSS3 transitions for some cool effects that take 
place when elements on the page when the 
browser window is resized or a device's orientation 
is changed, Media Queries are a big step forward in 
helping developers create a one-size-fits all 
experience, without the need for a separate 
mobile website. 



PREFIXH 

www.prefixr.com 

Prefixr is a great time-saving app that gives you 
cross-browser CS53 in just one click. With this online 
tool (winch has an API that integrates into many popular 
text editors), you can develop your code using a single 
vendor prefix and then automatically add the remaining 
code for other browsers. 


net tuts* 

Prefixr 


LIUERELOAO 

w w w.li ve re I oad .com 

LiveR&load makes your browser's refresh button 
obsolete. Instead of making changes, then hitting F5, 
UveReload monitors changes in the file system and 
then it will automatically make the changes live in the 
browser without a refresh. It will even compile 
CofteeScript, Sass, Ha ml. and more. 



; 

i 


| 

! 

r 

I 


i 

r 

i 

: 

: 

! 


; 

I 

i 


\ 

E 


! 

: 

i 

I 

: 

i 

j 

I 

■ 

i 


: 

5 

* 

: 


Code Igniter «tisiqnHgr.t9[Ti 

PHP-based open-source web application 

framework. Both flexible and powerful 

Sumpter si impler.cQ m 

Boilerplate code and files to kick-start your web 

project without unnecessary fluff 

Open Exchange Hates 

QDeiiexchanaerates.org/documeiTtation 

Free API far getting exchange rates 

programmatically over the web 

FlickrAPIwwwilickr.com 

Grab and manipulate Flickr images using its API 

service directly from your code, 

Transmit mw.Eanit.Km/trfln&mit 

Great FTP application for Mac computers from the 

makers of Coda and Diet Coda 


Open Layers www.QpenJayers.Qfy 

Build custom maps with personalised overlays 
using various different providers 
ColorHunter www.cotorhunter.com 

Upload a photo to get an instant colour scheme 
defined for you! 


Skitch www.skitch.com 
A useful screengrab tool that allows you to 
annotate grabs with text and marks 

Gridless Ihfl ICQQI OtJ V.fl I lh Ub.CQITl/ 

gridless Ittilerfllate 

HTWL5 and C5S3 boilerplate system aimed at a 
mobile-first approach 

Page Speed Online 

de ve looers. aooa I e.com/paa espee d 

Get useful hints and taps to increase the page load 
speeds on your site 


FontStmct foinlstrucf.com 

Create your own typefaces using this online editor 
and creation tool 

HootSuite hoot suite, earn 

Monitor and react to your social network feeds 
using a single interface 

Create interactive typography easily with this 
useful JavaScript plug-in 

Mobilized mobl ize i 5.CQ m 

Make existing sites more mobile orientated with 
this framework 

stock.schng sxcJm 

Free stock photography, some without limitation 
- ideal for web designers 

Prezi arezi.com 

Create and deploy powerpo«nt-style presentations 
online with this interactive tool 

Stitches draptun ,g ifhuti com /stitahe h 

Generate CSS Sprite sheets by uploading your 
existing images and copying the output 

Cage cafleaafl.cam 

Useful online tool for collaborating with other 
designers and developers 

PDF.isgithub.com/mozilla/pdf.i5 

Render PDF files directly as native HTML with this 
JavaScript plug-in! 


feature 


49 









































200 ESSENTIAL TOOLS AND TRENDS ► 


W3C MARKUP VAUDA1I0N SERVICE 

validator w3.org 

The W3C’s validator should be part of every developer's 
workflow. It’s not going to make your code perfect but 
it will help you track down errors and will help you 
better understand what kind of HTML is now 
considered best practice, and which elements have 
been removed from the spec. 



TYPEKIT 

www.typekit.com 

Typekit makes it easy to use a full library of fonts on 
the web for the first time. Rather than limiting you to 
commonly installed fonts. TypeKit uses a 
downloadable format ttiat allows fonts to be 
temporarily installed in the browser. This allows font 
foundries to license their fonts without the risk of 
them being pirated, and opens up a world of 
typographic possibilities for web designers. 



IMPRESS 

www.WQrdpress.com 

WordPress is arguably the 
definitive blogging platform 
on the web. It powers millions 
of websites with its highly 


extensible platform, and has developed sufficiently 


to become a capable general-purpose Content 


Management System (CMS), such that it is easily the 



most popular CMS currently available. One of the 
key elements to the success of WordPress as a 
platform has been the license under which it's 
distributed - this allows the software to be freely 
used and adapted to suit each individual designer or 
developer's needs. As well as this generous licence, 
the extensible nature of the core system makes it 
easy to write plug-ins that work with the core, which 
has led to a hugely diverse and active ecosystem of 
supporting extensions covering functionality as 
disparate as ^Commerce shops to video galleries, 


CHROME DEVELOPER TOOLS 

d evelopers.q oon le.com/ch rom e-d evel ooer- tools/ 

docs/overview 

Chrome's developer tools add-on comes bundled with 
the Chrome browser, and is essentially the Chrome 
equivalent to Firefox's Firebug and its developer tools 
add-on. You'll be continuously testing sites in Chrome, 
so its console, profiling, live CSS editing, DOM and 
resource checking tools are invaluable to your 


HOTGLOO 

www.hotqlQQ.com 

HotGloo is an easy-to-use prototyping and 
wireframing system that's entirely web based. It 
supports collaboration, allowing multiple users to 
work together to create interactive projects. 
Fully-featured tools allow for master pages as well as 
standard Ul elements, and the system makes it 
simple to collect feedback for iterative improvements. 


TWITTER API 

dev-twltter.com 

The Twitter API provides easy access to real-time and 
limited historical data based on users, hashtagsor pure 
search terms. The API can be accessed In a variety of 
ways to suit your project requirements, whether you're 
grabbing results via JavaScript or a server-side 
language, including JSON and XML. 



Extend your reach. 
Multiply your audience. 



FACEBOOK API 

d evel one rs facebook. com 

Facebook provides an API platform that allows for 
integration with the social media platform across 
websites, mobile apps and the Facebook website itself. 
If includes sut>APls such as OpenGraph and makes it 
simple to deploy engaging social experiences into your 
app or website without having to create all the 
plumbing from scratch. 


0 

JEL 


f*crh»k SDK 1.0 Tw IQS 


50 


feature 




»• 

>■* 





























































MOOTOOLS 

www. mootools.n et 

A popular alternative to iQuery, MooTools offers a 
framework for achieving common tasks such as 
grabbing a DOM node and assigning a CSS class. As 
with jQuery. the system is extensible and there is a rich 
ecosystem of piug-insand extensions available. While 
not as well-known now as jQuery MooToote uses a 
similar approach and is still very useful for rapid 
JavaScript development. 



IflOITtr 


mooratifr 



ADOBE KULER 

kuler.adobe.com 

Adobe Kuler is an online colour scheming tool that uses 
mathematical equations to provide a range of palettes 
based on a core anchor colour. Features include photo 
upload to automatically create a complementary colour 
scheme, the ability to download swatch files, and store 
favourite schemes for later retrieval. 



DREAMWEAVER 

www. a dob e.com/d rea m weave r 

Dreamweaver is the de facto web design tool, and while 
historically expensive is now far more accessible as a 
result of the Adobe Creative Cloud. The latest version 
offers enhanced WebKit-powered live view, live code 
and a host of integrated services including syntax 
support for jQuery PHR ASP.NET and more. 





THE EXPERTS CHOICE 



CURES SEES 
MD at Square Circle 
Media 

X-Frecise ls3.envsto. 


r; 

BmwserStaek wwwtifCM&erstack.cam 


Layer Cake YflmmiWtltliLmtrf 



ELIZABETH 

ROBSON 

Author ol Wickedly 
Smart 


Hype vavivI i irni j f mrn/nvry! \ 

DietCoda mnirmrri 
Adobe Shadow 



JEFFREY WAY 
Editor at Netfeits* 

Prefix r 

v,ww.nreftxr.com 


L aravel ferave/mm 



DAVID MAY 
Chief creative at 
Wijmo 

Theme Roller 


kiu&MiLQpm/lhemeEnRei 

UXPIN&UXPin notepads 

ColorSchemer Touch 


MlaicheiTierfflirfeuch infaohp 



HAMPTON CATLIN 
Inventor of Sass 
Link Conditioner 

rmttasivn^. 


I irbkan 

\ Bourbon tf/gt iQtlttiQLWktlQU&Vn 
\ Spracker 9. rr / 


j snrseker 


W 


ERIC MEYER 

CSSBepert 

BBEdit 


Browser/Inspector Combo 

various 


I Moqups moaups.com 

* Online tool for generating advanced 
; markups before building a website 

I TheResponsinator 

\ www.resDQnainatQr.CQm 

| VI ew websites i n a host of resol uti ons for 
l sma rtphones and tablets 

] Mustacbe.is git hu b .com /\ Fin I/m us lache. js 

| Less work with these logic-less templates for a host 
| of coding languages 

I WPtouch Pro 

; www.bravenewcpde.com/Droduct/wDtouch-Dro 

j WordPress plug-in that instantly adds a mobile 
i version qf site 

j Fatternizer pgKsmfcf r.WITl 

\ An online CSS3 stripe generator tool 

| KttidoUIwww.KenclQm.com 

| A framework to help build HTML5 apps 

| Coffescript coffeescript.Qro 
| Lightweight is nguage that com pi les i nto JavsSerlpt 

| Codesniffer pear.phD.net/Dackaae/PHP 
j CodeSniffer 

I This tool checks PHP code to a defined standard 

! MoodboardLite 

! ityne5.aDBls l QgfTi/y&/flDP/niQQtlt?Qflrd-litfi/ 

] id3637&6813?rm=S 

i iPad app for creating mood and inspiration boards 

| codosauriisiLun&j, fc ajj l QL£,Qjj,mi!ya/ajj,p/ 

j cQdPSfl urn s/id3S25Q Qg3£?mt=S 

| FTP Client which allows you to edit your code 
| directly on the server 

i The popular Mac-based text editor from Panic 
j Divw w w w.rn I zaa e. com/d i v v v 
| A screen workspace management tool 
j Fitvids www.rittfid 5 l 5 .cpm 

I A jQuery piug-in for fluid-width embedded videos 

j HTML-IpsttmwY/W.html'iPSlimiMni 

! Quick and easy Lorem Ipsum placeholder text n 
| various HTML contexts 



| Sublime Text 2 WWW. 5 Ut?limfite^UQfT 1 

! The feature-rich text editor for web app developers 

\ Markdown 

| darinqtireball.net/proiects/markdowri 
: Automatical ly expand marked-up text to ful I HTM L 
I using markdown 

1 Video.js 
i www.videQjs.ccnh 

1 Video player with the same API for HTMI.5 and Flash 

! AnythingSlider 

I yyyy Wrtts-l r i win/gwarn p I gs/TSn y Ih in 1 f 

I A multi-purpose content slider jQuery plug-in 

I BuySellAds 


www.buvsellads.CQm 

An ad network that's popular among web designers 

Notepads www.noteQad-QJus-Plus.org 


The popular and powerful text editor 

1 SpritePad 

\ Drag-and-drop interface for creating CSS sprites 


feature. 





































































200 ESSENTIAL TOOLS AND TRENDS ► 


IS Bin i5bin.com 

A live-rendered code sharing and testing tool, 
recently updated. 

IS Hotline java script, poc kettiotli ne.CQtri 

A completely free telephone hotline to help struggling 
JavaScript developers 

Zen Coding 

CQde.gQoa I e. com/p/zen-codin a 

A plug-in for text editors for high-speed coding. 

Gtt a it-scm.com 

A free distributed version control system for projects 

DocHub rioehub_io/ 

Instant access to documentation for CSS, HTML, 
JavaScript and more 

HTML5 - Edition for Weh Developers 
developers,whatwfl.org 

The HTML5 spec, rewritten specifically for developers 

CSS3 Generator cssJaene rate r,corn 

A toot that generates code for tonnes of CSS3 features 

Animate.css daneden.me/anlmate 

A library of ready-Lo-use CSSS animations 

MicroismicrQis.com/ 

Search engine that works for single-purpose 
JavaScript frameworks 

CSS3 Click Chart c5s3tliMarl,tQfn 

Code, links, and examples for loads of C5S3 features 


: 

I 

: 

i 

i 

: 

j 

I 

| 

: 

: 

j 

: 

i 

: 

: 

: 


: 

: 

i 

: 

j 

: 


CodePeri todeoen.lo 

A code sharing tool with extensive library and I 

preprocessor support [ 

Video SWS prapgn^n^.dfi/htmlfivldfio 

A feature comparison of about two dozen HTML5 [ 

video players i 

Skeleton www.aetskeleton.com j 


A boilerplate for responsive, mobile-friendly 
development of sites 

Responsive Images Chart bit.lv/DMiKCv 

A chart with feature breakdown for many responsive 
image solutions 

LABjs iabjs.CQm 

Script loader to enhance page performance and 
reduce resource blocking 

RequireJS reouireis.om 

Script and module loader designed to improve speed 
and code 

jQuery Mobile iauervmobile.com 

Touch-optimised web framework 

Aiaxload w w w.a ia xJoad. info 

A tool for generating Ajax loading animated GIFs 

Web Developer Toolbar 
w w wxhr isued erick. com/ work/webdeveloper 

The popular developer tools for Firefox and Chrome 

Parallax.is 

sto I h 5d&rf >fl1lh u&.t gm/Para Wms 

A JavaScriptframework for creating parallax scrolling 

Google Webmaster Tools 
w w w.g oogle.com/web masters/too Is 

Webmaster tools for optimising websites for search 

Lay® Styles www.laverslvles.org 

A Photoshop-like layer styles interface that produces 
CSS code 


: 


; 


; 

; 

: 

: 

: 

; 

: 

: 

: 

: 

i 

i 

: 

I 

: 


j 

i 

! 

j 

: 

■ 


| HTML 5 ★ BlllLEHPUITlH 

HTML5 BOILERPLATE 

www.htrtil5bQilerplate.CQrn 

HTML5 boilerplate provides a basic structural framework into which an HTML5 website or webaop can be deployed, 

The system is set up to be compatible with all major browsers, including older versions of Internet Explorer, while still 
allowing use of the modem HTML5 tags such as <artide> <aside> and <header>, The system also features mobile 
device optimisation, allowing for rapid deployment across different platforms including the modern breed of 
smartphones and tablets. 

Other useful features include deliberate support for progressive enhancement limited cross-dependencies 
(allowing you to remove whole sections of code without worrying about breaking other parts of Lhe system) and it 
even provides a boilerplate .htaccess file to set up best-practice gripping and caching on your server 


BASECAMP 

w w w.baseca mp.cQm 

Basecamp is an online project management system that 
allows you to collaborate with colleagues, assign tasks 
and track progress with ease. The system provides to-do 
lists, discussion areas, an asset repository and shared 
calendar. Part of a suite of applications offered by 
375*gnals including Highrise, Backpack and Campfire, 
which together provide a complete suite of 
management tools. 


© 




More pwpte In more places manege 
more projects on the web today with 
Baseeamp than any other app. 


gf* Last week 14*432 companies kicked 
off new projects using Basecemp, 
Today (ft your turn. 


Find Otft i^Y Of 5|*nvOurnf»t pmjft far 


EVERNOTE 

www.evernote com 

Evernote allows you to create a virtual scrapbook of 
webpages, photos, text and audio that you come across 
while browsing and access them on any of your devices 
including your desktop computers, phone and tablet. 
The database allows you to create keywords and tags to 
quickly categorise and search for items in your 
notebook, and even uses OCR to digitise text in photos 
and images. 

DROPBOX 

w w w-d ropbQx.com 

Dropbox is a free service that allows you to store files on 
the web (in the cloud) and automatically synchronise 
them between your different computers and devices. It 
works on Android, iPhone and iPad, as well as your 
desktop computer, and supports collaboration through 
sharing of folders with your contacts. 


WETRANSFEF 

w ww.wetransfer.com 

WeTransfer is one of a host of free services that allow 
you to easily send a file that's too big for regular email 
What makes this particular service stand ouL is the 
excellent 2G6 file limit, and the ability to send multiple 
files simultaneously without having to register for an 
account, making it an ideal way to get your larger files 
around the web. 



HECAPTCHA 

www.recaptcha.net 

reCaptcha is a free service that helps prevent spam by 
presenting a pair of words scanned from books, 
newspapers and radio show scripts that are being 
digitised. The system works by matching known words 
with unknown words, allowing users to prove they're not 
spam bots, and the Google-sponsored digitising project 
to get free translation at the same time. 



52 . 


feature 












































HB Cikf Pt£F malvi truildinq mb 
R (iffipM. Ml(l Ain) 

I (l^WflfBCOdf 

? 


Why w* Cu*PUP 


CAKEPHP 

www.cakephp.Qrg 

Prototype PHP-based web applications rapidly using 
boilerplate code and scaffolding. CakePHP is MIT 
licenced, and comes with a lot of the common plumbing 
already taken care of including authentication, database 
access, caching and security. CakePHP has a loyal 
following so support is good too. 


Bill* API 

dev.bitlvxQm 

The bit.lv API allows to you programmatically create 
shortened links in the same way that twitter does when 
you paste a link into its website. You can also track and 
monitor usage with some analytics support. It's a pretty 
simple service, but incredibly useful in the modern era 
of character-limited social media communication. 


ADOBE AIR 

www.adQbe.CQim/air 

Adobe AIR allows you to deploy native applications 
across different operating systems while using standard 
web development tools such as HTML. CSS, JavaScript 
and Plash. Apps can be compiled into the AIR format, 
which is then installed directly to the host operating 
system via the web, making it ideal for developing 
desktop widgets. 


JQUERY 

^ jUU6/r jqusry.com 

*** jQuery arrived at the 
same time as the explosion in front-end client-side 
rich user interface development, and helped to 
herald the arrival of HTML5 into everyday 
conversation as a result of its ubiquity. Before 
jQuery creating cross-browser user interactions 
was tricky to adiieve and often extremely 
time-consuming. jQuery solved this by abstracting 
the browser differences through a series of 
common methods, allowing developers and 
designers to spend time worrying about how to 
provide the best user experience rather than 
worrying about the nuts and bolts of supporting 
different DOM models and JavaScript engines. It 
also brought the idea of chaining commands 
together to the masses, making for dramatically 
more succinct code! 

Today. jQuery con be found on more websites 
than any other JavaScript library, and it has an 
almost unlimited number of tutorials, plug-ins and 
extensions available to further enhance the core 
functionality. 


EXPERT QUICK-PICKS 


Mobile Design Pattern Gallery 


ONDREJ SKACEL 

Interactive developer, Str iker Digital 
PSPadwww.csoad.com 

Lightweight-but-powerful text editor with handy 
features including FTP client, code highlighting. Lorem 
Ipsum generator, predefined HTML and much more. 

Window Resizer 

hchrQme.qQQqle.CQiTi/webatQre/detail/ 

If kplliraakff an hi nideamm mi I r gpf onf h? 

utm source-chrome-iito-icon 

Window Resizer is a Google Chrome plug-in that 
allows you to comfortably test your website In various 
predefined or your custom resolutions. 

gsap yyyy w.flresn 12 

Greensock brings the ease of animation from Flash to 
HTML. Animating DOM has never been easier. 

THORD DANIEL HEDENGREN 
Author, designer and speaker 

iPad apple.com/iipad 

The iPad is great for doing wireframes, especially 
when you complement if with a nice stylus, 

Basecamp ba5ecamp.com 

Basecamp is a great way to organise yourself. The 
service will save you time and energy. 

GitHub aithub.com 

GitHub is Git for the rest of us; great for managing 
your code and inviting others to collaborate. 

TOM! TONTTI 

UX Lead at White Sheep Isobar, Finland 
Live View for iPhone & iPad 

w w w.za mbetti-com/p roiects/li ve vie w 

Brilliant, yet simple remote screen viewing app, See 
your design on a device while you're still designing it. 


A reference to mobile app design patterns, illustrated by 
hundreds of screenshots. 

pencil en.wlKlaedifl.QrQ/wiKi/Fencll 

Perfect tool for making quick real-size mobile interface 
sketches and paper prototypes. 

ZEH FERNANDO 

Senior Developer al firstborn 

Charles www.charlesprQxv.CQm 

A very handy tool to inspect and manipulate the date 
gets transferred around your computer and a server, 

Chrome browser 

w w WiQQgq If ■ wm/l nll/sn/ch rcm s/brsm sf r 

Chrome's inspection and debugging tools for HTML. 
CSS and JavaScript are nothing short of revolutionary, 
j GooeleDrivedrive.aoociJe.com 

Great for making notes and sharing between the team. 
Sometimes considered the poor man's Project 
Management suite, but one that is very flexible when 
used well, 

GROUP94 

Belgian design agency 
J5DN kon oro 

JSQN [JavaScript Object Notation) is a lightweight 
date-interchange format. It is easy for humans to read 
and write, it is easy for machines to parse and generate. 

Screen Ruler www.micrQfox.com 

The best solution to check if things are positioned 
pixel-perfect! We're using it since day one at group94. 
Lorempixel lQremuixel.com 

Lorem pixel provides dummy images width the 
dimensions of your choice. 


MAGNUS DAHLSTRAND 
Clipmemi ww yy, 1 1 j pm CIJ Hi C9fP 
BetterSnapTool 
itu ne5.apple.com/us/app/ 

hietLeranacLflfll 
iTemi2 www.iterm2.com 


| Wires a uirktools. com/wires 

\ Aviary Image Editor 

i a<]Yarn:&d l flYlflrY.CQm/lQOI&/ 

| imaae-editar 

: 

= SCOTT STAAB 


\ Evemote www.evernote.com 

MARCEL KORNBLUM j Google Image tools ww w.aooa I e. 

CharlescharlesDroxv.com j 

Liveview zambetti.com/Droiect5/ j WhatTheFont 

livevi&w \ www.mvfonts.com/WhatTheFont 

OmmGraffie www.QmniQrOUP. j 

QQm/prQducts/QmnifirflrflQ ; jakuesodomka 

\ Capture screenshot 


PETE SIMMONS 
Firebug -ant firebug com 


Dreamweaver CSG 


adobe.com/prQduct5/ 

dreamweaver 


S thr9mg.qwq,taQffm/YYEtal9re 

| Dronlr clropJj.com,/hello 
j Fontcase 

j www.bohemiancodina.com/ 

j fon tease 

j LUBOSBURACIMSKY 


ROBERT STAIEKER 
Screen fly guirktools.com/ 
screen flv 


j Bootstraps twitter.qithub.com/ 

i Chrome Sniffer 


Ehrems.mqlg.wm/fffbstBrE/ 

detail 

TexturePackerGUI 

www.codeandwetJ.cQm/ 

tfi,a.lut£QacLaf 


KIERON HOWARD 
SymfonyZ www.svnifonv.com 



MATT GIFFORD 
coidF usionio ca[dluflJan,Qflin 
Brackets brackets, io 
PhoneGap Build API build. 
phQneqap.com/dpcs/api 





feature 



































































<tutoiials> 


Create an 
interactive 3D 
interface 
using WebGL 

WebGL is hardware accelerated, native 3D 
graphics for web browsers, and here we 
harness its power to create a 3D interface 



tools I Uh; 1 i I trends Dreamweaver A WebGL enabled browser 
export Mark Shufflebottom 



ebGL has been around for a little while now, 
and the threejs library is really coming of 
age with each new release. WebGL on the 
whole is incredibly complicated, with 
mounds of code needed just to get a 
:::::::: polygon to display. The threp library 

abstracts all of that and gives you access to 
simple JavaScript commands that allow you 
as a web designer or developer to create 
stunning 3D scenes in the browser, The 
ibrary now fully supports the COLL ADA model formaL 
which is an XM Phased model, so is easy far browsers to 
read. This format also supports animation so feel free to 
incorporate fully animated content from your 3D 
application in your browser. 

In this tutorial we are going to import a model in the 
COLLADA format and add interactivity to models 
contained within the overall COLLADA scene. We will 
attach mouse events to these models, which will give us 
effectively a 3D interface far a website or application. At 
present WebGL is supported by all the major browsers 
except Internet Explorer, which has no plans to support it 
because WebGL is based on OpenGL (the open graphics 
ibrary] and Microsoft tee DirectX instead. However, there 
are plug-ins available that will render WebGL. Please note 
that some browsers can only load models if they're 
accessed via a web server. 


WebGL on the whole is incredibly 
complicated, with mounds of code needed 
just to get a polygon to display 


n Getting started 

^ f It's probably a good idea to start by 
downloading tnree js from GitHub f qlthub-comj 
mrdoob/three.is) . Have a look through the projects to 
get an idea about WebGL. Now copy the start folder to 
the desktop and open index.html in Dreamweaver. 
There is some CSS already in there so add this code to 
the head section. 

001 <meta name= J, vievjport ,J 
ct>ntent- J 'width=device-width, user-sealable=no t 
mini nun-sea le=1.0, maximum-s cale=1.0"> 

002 <link href='http://fonts.gopgleapis.com/ 
css?f amily=Merriweather:700' rel= 'stylesheet' 
type=’text/css"> 


. Body content 

We're going to add some text to the project, so 
paste the code shown below into the body section of 
the page. Tins adds a heading and a box that will only 
be shown when we roll over various models in the 3D 
WebGL scene with the cursor. Change the text here, to 
have some real content 


001 <div id= J 'header ,J xhl>Oiscovery Centre</ 
hlx/div> 

002 <div c las s= JI info" 

id= "mountsin'"xh?>McHintain Va 1 ley^/h 2> 

003 <p>Ygur text here, </pX/div> 


A Copy the info 

Copy the entire div with the class info and paste 
it after itself twice. Change the id of the first copy to 
'lake' and the second to 'forest' These are the two 
content sections which are hidden to start with, but 
when the user roils over points in the scene, this 
content will be made visible. 


001 <div elass^'info" id= J, forest <t xh2>Forest 
Trails</h2> 

002 <p>Your text here.</px/div> 


Link to libraries 


keeping inside the body tag add the following 
lines, which link to the JavaScript libraries that we use. 
The first is the main thieej s library, while the second is a 
library for loading COLLADA models (an XML 3D model 
file). The detector code is used to see if the user has 
WebGL, while the remaining two are extensions to odd 
events to 3D objects. 


001 escript sre= M j s/Three. js H x/scrlpt> 

002 <script src=” js/ColladaLoader. js"x/ 
script> 

003 <script src="js/Detector. j$"x/script> 
004 <script src =1 j$/three*.domevent.j$ J ></ 
5cript> 

005 <script src='js/threex.domevent , object3d . 
]5'x/script> 


54 


tutorials. 











































<tuU>rials> 


Create an interactive 3D interface using WebGL | 



Detecting WebGL 

Using newer technology like WebGL requires 
you to ensure that the user knows if there is a problem. 
White most web browsers support WebGL. IE has no 
intention of doing so. There are plug-ins available for iE 
though. Add this code to detect WebGL. 

001 <script> 

002 if ( 1 Detector.webgl ) Detector. 
addGetWebGLMessageQ; 

Adding variables 

This is perhaps not one of the most exciting 
parts of our code, but these variables hold many 
important features that make our WebGL application 
work. Scene, camera and renderer are the basics 
required to get a WebGL scene Obviously we then 
need content to make the scene actually work. 

001 var scene t camera, Tenderer, model, 
ground, rot; 

002 var rotate=true, over=false; 

003 var loader = new THREE.ColladaLoaderQ; 

004 var mnt T inbox, lk, lbox, fr, fbox; 


Loadthescene 

The next block of code that we add toads the 3D 
COLL ADA model into our scene. The scene is stored in 


our model variable that we’ll use later on. The scene is 
scaled down, and then two functions are called. First we 
call the init function, to initialise our scene, and then 
after LhaL we call the animate function - this will make it 
move for us. 

001 loader.loadt 'scene.dae', function ( 
collada ) { 

002 model = collada.scene; 

003 model.scale .k = model.scale.y - 
model,scale,z = 0,125; 

004 initQ; 

005 animateQ; 

006 } 

Qg Initializing the scene 

To start our project we will create the I nit 
function, The first line creates a new div, which is then 
placed into the body. This will later be used to render 
our scene. The next line sets up a new scene that will 
hold everything we need to add. such as lights, models 
and a camera. 

001 function initQ { 

002 var container = document,createElement( 
'div' ); 

003 document,body,appendChiId( container ); 

004 scene = new THREE,Scene(); 


requestAnimationFrame { 

You will notice that 
requestAnimationFrame is used 
in the code, this is a browser j 
vendor API to save developers 
from using timer loops. Instead - 
the browser handles the loop 
for us, pretty handy! 


09 Creating the camera 

The camera is a virtual way of controlling what 
we actually look at, It takes three arguments, the field 
of view, the aspect ratto and how near and far it can 
see. Here we position the camera and tell it which 
direction to look, which as you can see is almost the 
centre of the scene. 

001 camera = new THREE,PerspectiveCameraC 40, 
window,innerWidth / window, innerHeight, 9,01, 
10&0 ); 

002 camera.position,set( -45, 12 f 15 ); 

003 camera.lookAtC new THREE.Vector3( -1, 2, 

4 } ); 

004 scene.add( camera ); 

Adding interactivity 

We add interactivity to the models by using a 
plug-in from www.learninqthreel5.com. The first line of 


tutorials 


56 






































<Uitorials> 


| ("reate an interactive 3D interface using WebGL 


Discovery Centre 


Discovery Centre 



Discovery Centre 


*Tnp left, clockwise;* 

* The scenery in the 
model Is located and 
made la spin. When the 
mouse rolls over this* it 
slows dawn so the user 
can select an 
Informaflcrtn point 

* Information points are 
the bright pink cubes in 
the scene Ihat are given 
mouseoverand 
mouseout events 

* When the mouse 
moves over the 
information points Ibey 
trigger the event, which 
turns on the appropriate 
content area, creating 

a rollover information 
point on screen 
-When the mouse is 
over the forest 
information point, the 
appropriate text 
appears In a box, 
positioned on the 
r«ght hand side 






code enables me camera to look at which model is 
under the mouse, The next line gets the ground plane 
from the COLL ADA model. We can then add mouse 
events for when the mouse is over or has left leading 
us to turn on and off the rotate variable causing the 
scene to rotate or not. 

001 THREE*Object3D,_th re-ex DomEvent, 
camera(camera); 

002 ground = model.getChildByName( 'ID276 f r 
true ); 

003 g round.on('mouseout', functionQ{ 
rotate=true; 

004 }); 

005 ground * on ('mouseover', function Q{ 

006 rofate=false; 

007 }); 

Mountain point 

The first line of the code grabs the mountain 
information point from the COL LADA model and stores 
it in the variable mnt. The mountain text in the div tag 
wiLh the id mountain is stored in the variable mbox. 
When the user moves the mouse out from the model it 
sets the mbox to be invisible. 


001 mnt - model-getChildByWame( r ID43\ true }; 
002 mbox = document ,ge til ementBy Id(" mountain' 1 ) ; 
003 mnt. on (■'mouseout', function ()( 

004 mbox.style.visibility - "hidden''; 

005 over=false; 

006 }>; 

Mouseover mountain 

When the user rolls their mouse over the 
mountain information point, the relevant text becomes 
visible in the mountain div tag. In this way we create 
content that becomes visible when we rollover parts of 
the 3D model, and it disappears when the mouse 
moves out. The variable over is set to true to stop the 
whole model rotating. 

001 mnt.on('mouseover 1 ', function()( 

002 mbox.style.visibility - "visible"; 

003 over=true; 

004 }); 

, More interactivity 

Similar to what we did in step 11, we store the 
lake information point model in the variable Ik and the 
div tag named lake in I box. When the cursor moves out 


Adding content 
to threejs Scenes 

In earlier iterations of the 
three.is framework, you had 
to use scene.addCamera to 
add specific features. Now, 
however, there is a global 
scene.add that you can add 
all models, lights and 
cameras. 


from the lake information point we turn the visibility of 
the lake div tag off so it can! be seen in the display. 

001 lk = model.getChildByName( J ID25'„ true ); 
002 Ibox = document.getElementByldC"lake"); 
003 lk,on('mouseout', function(){ 

004 lbox.style.visibility - "hidden”; 

005 over=false; 

006 }); 

Going over the lake 

When the user moves the mouse over the lake 
information point, we again use this to turn on the 
visibility of the lake div tag so that the content 
connected with it becomes visible on the screen. As 


b6 


tutorials 


























<tutoriafc> 


Create an interactive 3D interface using WebGL | 



Accessing the 
model names in 
the COLL AD A file 


In the tutorial we access the COLL ADA 
model and get access to specific 
Internal models to give us the rollover 
points. You will have noticed that 
these internal models have unhelpful 
names such as 1D2S. You may well 
wonder how we know that this is the 
name of the specific model or 
whether we named our model by such 
a peculiar name by choice? The 
answer is wrapped up in the software 
that was used to create the model. We 
used Cinema 4D. which allows each 
model to be named, however these 
names seem to disappear when we 
export to the COLLAD A model format- 
With this format being an XML-hased 
structure, we opened the model in a 
text editor and did a search for 
lakePoint, which has a nodelD value of 
ID25,so we use this to get access toil. 


you can see this is very similar to creating mouse 
events in the regular DOM. 

001 lk.on('mouseover J r function(}{ 

002 lbox, style .visibility = ''visible 1 '; 

003 over-true; 

004 }); 

Accessing the last model 

You have probably got the hang of this by now, 
and so in this code we ogam access the model for the 
forest information point this time end store it in the fr 
variable. We store the associated div in the fbox variable. 
Using those variables we turn the visibility of the text off 
when we roll the mouse out of the model. 

001 fr = model.getChildByWame( 'ID34' r true ); 
002 fbox = document.getElementById("forest"); 
003 fr r on('mouseout', function{){ 

004 fbox, Style .visibility = ''bidden' 1 ; 

005 over-false; 

006 }); 


Final rollover 

Finally we add the rollover for the forest 
information point. As done previously, we check if the 
mouse is over the model and turn on the visibility of the 
text so that the right information is displayed as we role 
over tiie model. This concludes the interactive features 
of the site. 

001 fr.on('mouseover' f function!)! 

002 fbox,style.visibility - "visible"'; 

003 over=true; 

004 }); 

Lighting up the scene 

Our next section of code actually adds the 
COLL ADA model into the scene so that it can be 
displayed. We then create an ambient light that has a 
dark grey colour and full luminosity, which is the 1 in the 
brackets. This light is also added to our scene. We do 
not have to position this as it just gives ambient light to 
the whole scene. 

001 scene,add( model ); 

002 var ambient= new THREE. AmbientLight( 
0x333333 h l ); 

003 scene,add( ambient ); 

Add a spotlight 

Now the code sets up a spotlight this can be 
placed in a position and targeted to light specifically. 
This is given a warm, almost white colour and is set to 
be stronger than 1. The light is set to the same position 
as the camera and is pointing towards the centre of the 
scene. Finally this light Is added to the scene- 

00 1 var light = new THREE,Spotlight( GkFFDDDD, 

i-2 ); 

002 light.position = camera.position; 

003 light,target.position.set( 8, 0, & }; 

004 scene,add( light ); 

Rendering the scene 

To make the scene visible we need to have a 
Tenderer to actually draw the scene. Notice how the 
Tenderer sets the anti-aliasing of the objects to true to 
give softer edges to the models. The render size is set 
to the inside dine ns ons of the browser wndow. The 
tenderer is added to the container we added in step S. 

001 Tenderer = new THREE,WebGLRenderer( { 
antialias; true } ); 

002 Tenderer,setSize{ window.innerWidth f 
window,innerHeight ); 

003 container,appendChiId( Tenderer, 
domElement }; 

004 } 

Create the animation 

The animate function contains the code that 
moves models on the screen. The i statement checks 


that the user hasn't got the mouse over the model and 
not over one of the information points, it then rotates 
the scene. Otherwise it slows the rotations down so it's 
easy to hold the mouse over the information points. 

001 function animate!) { 

002 if(rotate=true &S over==fal5e){ 

003 rot=0,00S; 

004 } else if (rotate==false II over-true)! 

005 rot-rot*0.95; 

006 } 

Update the display 

The final code here updates the model position 
with the value of the rot variable, The Tenderer is told to 
render the scene using the camera. The animate 
function is set to be called at 60 frames per second 
using the requesLArlmationFrame function. The 
function and the code block is closed. 

001 mode1.rotation.y+=rot; 

002 Tenderer,render( scene, camera ); 

003 requestAnimationFrame! animate ); 

004 } 

005 </script> 

Test the project 

We have now finished all the code for the 
project, so save the file and test it in your browser. The 
main scene will rotate; if you move the cursor over the 
scene it will stop rotating by slowing down gradually. If 
you move your cursor over one of the pink information 
points, you will get the appropriate information appear 
in a box. 











tutorials 57 


























<Uitorials> 


| Serving images to high-resolution screens 


Serving 
images to high- 
resolution 
screens 

As high-resolution screens become 
more and more commonplace, we 
need ways to display graphics that take 
advantage of their capability 

tools I tech I trends C 5 S 3 , HTML 5 , JS 
expert Ben Fra in 



he latest iPad has a 2,048 x 1,536 
pixel resolution at 264 pixels-per- 
inch (PPI) screen, the iPhone 4 and 
i Phone 4S have greater pixel 
density: 960 x 640 pixel resolution 
at 326 ppi. It isn't just Apple's devices 
that can be considered high- 
resolufcn, even if they donl boast 
marketing tenms like Retina display. 
The HTC One X uses a 4.7-'inch 
display, with 312 PPI for example; and 
even Sony's latest handheld gaming device, the PlayStation 
Vita, has a 220 PPI screen, We now have Apple's Retina 
display MacBook Pros too, at 220 PPI, It's easy to see where 
this is going pretty soon high-resolution/PPI displays will be 
the norm on all devices that access the web. The pickle at 
present c that while text looks beautiful on these devices, 
web images usually donl As high-resolution devices often 
have two dots per CSS pixel, the reset is that images end 
up looking blurry. 

Thankfully, there are a number of things we can do to 
address this issue. Let's take a look at how CSS3 media 
queries and icon fonts can ease our pain, and then deal 
with the obvious elephant in the room; delivering alternate 
tmages in markup. 


Oi CSS minimum-resolution 

CSS3 media queries can be used to target 
high-resolution/PPI screens; we can use them to serve 
different background images depending upon the pixel 
density of the device. Gy now you are no doubt familiar 
with the media query syntax. Let's suppose we want to 
show two images, one for standard screens and one for 
high-PPl devices. We can go ahead and use the old 
min-resoiution property: 

001 ■airedia (min-resolution; 96dpi) ( 

002 /* rules here would apply to a normal 

screens */ 

003 } 

004 @media (min-resolution: 192dpi) { 

005 /* rules here would only apply to high- 
resolution screens */ 

006} 

32 About those iDevices 

Sadly WebKit (JOS, Android, Safari, Chrome and 
others) hasn't implemented min-resolution, and so we 
need to use WebKit's own property. St uses a simpler 
system where the value represents the pixel density of 
the device. A 'normal' screen will have a pixel ratio of 
one. An iPhone 4 or similar, on the other hand, could be 
targeted like this: 

001 @media (-webkit-min-device-pixel-ratio: 2) 

002 { 

003 /* Webkit high-resolution specific rules 

here */ 

004 } 


03 Other WebKit devices 

While the WebKit prefixed rule also targets 
Android devices, many Android handsets (although still 
enjoying high-resolution screens), don't have quite the 
same pixel density as something like an iPhone 4,4S or 
new iPad - and none have anything near Retina display. 
Therefore, you may want to lower the threshold to 
include more devices, 

001 &nedia (-webfcit-nin-device-pixel-ratio: 

1.5) C 

002 /* lcwer threshold rules here */ v 

003 } 

Mozilla is different 

Another vendor, another expression! Mozilla uses 
a comparatively odd syntax, if you wanL to target 
high-resolution/PPI devices that might be using a Mozilla 
based browser such as Finefox, pay special attention as 
the minimum part of the expression is written first 
followed by a double-hyphen: 

001 (Shiedia (min—moz-device-pixel-ratio: 2 ) { 
002 /* Mozilla rules here */ 

003 } 

05 Opera syntax 

Unbelievably, Opera uses a different syntax again, 
While similar In syntax to WebKifs version (albeit with an 
-o- prefix as opposed to -webkit-l Opera has opted for a 
ratio representation of the pixel density, For example 
instead of writing 2 as the value (as you would with 
WebKit), it must be presented as 2/l. 



001 @media {-G-min-device-pixel”ratio: 2/1) { 
002 /* Opera rules here */ 

003 } 


06 The W 3 C way? 


* ~ Owing to the prevalence of the -webkit- prefixed 
version of this media query, you may be forgiven for 
assuming that the W3C would follow suit, declaring an 
un prefixed version of that syntax as the global web 
standard. However, as minimum-resolution already 
existed, they have not done this and have instead ooted 
to add a new unit of measure, dots per pixel, written as 
dpptx in CSS. Below is what the syntax is likely to be 
styled as in the future. 


001 @media (min-resolution: 2dppx) { 
002 /* rules here will apply to high 
resolution media in the future */ 

003 { 


07 Full vendor stack 

Let's go nght ahead and put all these previous 
vendor versions together with the likely W3C 
implementation (dppx), into one media expression that 
we can use to bulletproof this technique whenever we 
implement it. The user-agent (whichever browser you are 
using) will happily ignore any expressions that don't apply 
and render the one most relevant, ensuring cross¬ 
browser functionality- 

001 @media (miirresolution: 192cfci) r {-webkit- 
min-device-pixel-ratio: 2), (min—moz-device- 
pixel-ratio: 2), (-o-min-device-pixel-ratio: 


58 


tutorials 






























<Uitoiials> 


Serving images to high-resolution screens | 


r#f(rrltn (tr'nhuHfin Vrtrrt* 





Tvprlqi llifh ImilbtlM h» 


®uo@o 


<Lalt> 



<L(!ft> 

♦ Include more 
devices by 
altering the 
pixel density 


♦ Ifyoudontset 
an appropriate 
background size 
value, a 

value, Many 
high-resol Litton 

wl() 0 


high-resolution 
image could 

screens could 
benefit 

Ui*f tkiiudiU 


overflow Its 
container 

<De]ow left* 

hbkhh 


< Below left* 

* WebKit doesn't 



♦ With 

respect the 

: % 


background ■'Size 

ml n-resolutlon 


set to contain, the 

property, so it's 



background 

not possible to 

(IBj 


Image will scale 

rely on it for 



correctly 

Safarlor 



-regardless of the 

Chrome 

lUOAl ' “ *** “ f** 


Image she 




2/1) r (min-d^vice-pixel^ratio: 2 ), (min- 
resolution; 2dppx) { 

@02 /* High Resolution styles go here */ 

003 ) 

qj A use case 

Let's su ppose we wanted two versions of a site 
logo, one for hig ^resolution screens and another for 
everything! else. Using our full vendor stack from the 
previous step to achieve parity across browsers, here is 
an example of how we could set one image for normal 
screens and another for high pixel-density displays: 

@01 . logo { 

00 2 bac kg round-image: urlimg/logo. 

png r ); 

003 } 

004 Omdia (min-resolution: 192dpi),. (-webkit- 
min-device-pixel-ratio: 2), (min—moz-device- 
pixel-ratio: 2), (-o-rnin-dev ice-pixel-ratio: 
2/1), (iriin-device-pixel-ratio; 2), (min- 
resolution: 2dppx) { 

005 ,lcgo { 

00-6 background-image: url( r logG@2K,png'); 

007 > 

008 3 

09 Making it fit 

::: ~ r Wh He that wl ll display the correct image, if we set 
a hign-resclution background image as our logo, and the 
lego div it sits in is smaller in pixel size than the image, 
ordinarily it will overflow the container. Thankfully, there is 
a C5&3 property that can solve our issues. We can use 


the background-are property with a px value or contain 
value to make it fit: 

001 (^nedia (min-resolution: 192dpi), (-webkit- 
min-device-pixel-ratio: 2) h (min—moz-device- 
pixel-ratior 2) f (-o-min-device-pixel-ratio: 
2/1), (min-device-pixel-ratio: 2) r (nin- 
resolution: 2dppx) { 

002 r logo { 

003 background-image: url('logo@2x.png'); 

004 background-size: contain; 

005 } 

006 ) 

10 Background-size options 

The background-size property can also take 
numerical values, Using pixels for size can be useful if 
you want your images to stay a set size within a fluid 
container. The width is given first, then height. If no 
height is given, auto is assumed for the height A 
percentage can also be used and this will render the 
image as a percentage relative to the container. 

001 .background-size-dimensions { 

002 background-size: 39@px 30@px; 

003 3 

11 Naming conventions 

You'll notice in step 3 tfiat the high-resolution 
logo file name «s the same as the standard resolution 
targeted one except it has been suffixed with @2x' 
before the file extension. This is a naming convention 
used lay Apple when targeting their Retina displays. It's 


actually not necessary, but many pre-existing JavaScript 
solutions use this convention- so it may be something 
that is worth adopting. 

001 standard { 

002 background-image: url('image,png J ); 

003 3 

004 r high-resolution { 

005 background-image: url {‘imaged, png'); 
006 } 

Icon fonts 

If you want to provide scalable icons for a design, 
there is a better option than images: icon fonts. There are 
a growing number of icon fonts available, and they can 
be included in a design using the ©font-face rule. You'll 
need a version of your icon font in WOFF, SVG, EOT and 
TrueType to cover all browsers. Then use the ©font-face 
rule to include it. 

001 @font-face { 

002 font-family: *hr J ; 

003 sre: url( l fonts/hr,eot') ; 

004 sre: url( 1 fonts/hr, eot?#iefi.x*) 

13 Setting up defaults 

In this example we are using fonts from icoMoon 
(which can be found here keyamoon.com/ 
loomoon/#toHom&l which are mapped to characters. 
Therefore, we can add them by adding a particular class 
to the icons needed in the markup. First of ail, well define 
styles that will be particular to all the cons. This will cover 
us wherever the classes are ordered among others. 


tutorials 


59 
























<Uttorials> 


| Serving images to high-resolution screens 





* pjclurelllLis. bv Scott Jehl provides the ability to 
s-wap out alternate images defined in markup 


• SVG Images scale well, much like lean fonts, and are 
a good choice where browser support Is acceptable 



001 [class'^icon-"];before, [class*-" icon- 
”]:before { 

002 font-family; *hr ? ; 

003 font-style: normal; 


Adding with class 


* We can now add the relevant icon wherever we 
want by adding the relevant class, The icon is inserted 
before the element it is added to. If you want the icon to 
appear afterwards simply amend the pseudo selector 
from before to after. 


001 . icon-chrome:before f 
002 content: “\21"; 

003 } 

004 , icon-firefox: before { 
005 content; "\22 ,F ; 

007 .icon-opera;before { 
008 content: “\23"; 

@09} 


010 .icon-globe:before { 
011 content; “\ 24 "; 

012 > 

013 .icon-check-alt;before 


{ 


014 content: “N25"; 

015 } 


15 Adding icons inline 


Adding the icons inline without a pseudo selector 
is not a good idea semantically, as the content is 
meaningless. If you wish to, remember to use character 
entities for each number. Otherwise the number will 
appear as is, Here, we are adding all the icons in a row, 


001 /* CSS */ 

002 .icon-insert { 

003 font-family: ‘hr'; 

004 font-style: normal; 

005 speak; none; 

006 font-size: 5 em; 

007 } 

008 c!-HTML —> 

009 <p cla$s=”icon- 
insert">8#x21; E#x22; &#x23; 
&#x24; &#x.25;</p> 


16 Inserting as data attribute 


You can also use data attributes to insert icon 
fonts. This lets you keep the icons out of the actual page 


content itself, Remember that any attribute beginning 
'data-' in HTML5 is perfectly valid code, so it isn't going to 
sour the markup for validators. Insert the icons in the 
markup in the same way as the previous step: using 
character entities. 

001 /* C$5 */ 

002 [data-icon]:before 

{ 

003 font-family: ‘hr'; 

004 content: attr(data- 
lcon); 

005 speak; none; 

006 font-size: 5em; 

007 } 


17 Font flexibility 


By using fonts, the icons will scale to any 
resolution and can have colour, text-shadows and even 


experimental '-webkit-mask-image' values (for WebKit 
browsers! added. What's more, compared with images, 
the file size is tiny. For the five icons used here, the largest 
font that would be served is just eight KB (before gap! 


001 [class*=”icon-”]:before, [class*=” 

icon-”]:before { 

002 font-family: ‘hr'; 

003 font-style: normal; 

004 speak: none; 

005 font-size: 5em; 

006 color: green; 

007 -webkit-mask-image: 

-webkit-linear-gradient(white 
f rgba(0,0,0,0.7>); 

008 text-shadow ;0 -Ipx 
black; 

009 } 


18 Using Picturefill 

There is no proper way to add alternate 
high-resolution images such as photos an markup yet. 
One solution is to use Picturefill. a JavaScript solution that 
follows a markup pattern similar to the HTML5 <video> 
tag, After adding the Picturefill JS file within the markup, 
alternate images can be specified using media query 
style expressions. Note the slightly different syntax 
present for the media query. 

001 <div data-picture data-alt=”An 
image, whose source changes depending 
upon the media query style expressions^ 
002 <div data-src=”normal. jpg' r x/div> 

003 <cfiv data-src= H high- re solution, 
jpg” data-media=”(min-resolution: 

192dpi ) t (-webkit-inir-device-pixel- 
ratio: 2),(min—moz-device-pixel- 
ratio: 2),(-g-min-device-pixel-ratio; 

2/1) r (rnin-device-pixel-ratio; 2), (min— 
resolution: 2dppx)”x/div> 

004 <3— Fallback content for non-JS 


60 


tutorials 















































<Uitoiials> 


Serving images to high-resolution screens | 


browsers. Same img src as the initial, 
unqualified source element, —> 

005 <noscriptximg src- ,f norma 1. jpg fr 
alt="An image, whose source changes 
depending upon the media query style 
expressions”></noscript> 

006 </div> 



* A great tool for delivering images on a responsive 
website can also be used to deliver h*gi>resolL!tion 
images where needed. Head over to adaptive-images, 
com and after installing (you are going to need access to 
your server's .htaccess file), alter toe standard line of 
JavaScript used, to: 

001 <script>document. 
cookie='resolution^’+Math.max(screen. 
width,screen,height)+(“devicePixelRatio” 
in window ? **, "tdevicePixelRatio : 

",l p ') + f ; path=/' ;</script> 

Uploading high-resolution files 

'*■ * When using Adaptive images for high’resolution 
»mages, you'll probably want to limit which images are 
processed by it. You can limit this by altering toe. 
htaccess file. For example, if we didn't want Adaptive 
Images to resize images inside a folder called no-thanks 
(folder addresses are root relative) we could add a line 
that looks like this 

001 RewriteCond %{REQUEST_URI} I no-thanks 

2i Fit and forget 

One great thing about Adaptive Images is it works 
by re-using existing images where possible for 
high-resolution screens. For example, if viewing on an 
iPhone 4 in portrait, Adaptive images will multiply the 
CSS pixel-width of toe device (320px) by the pixel density 
reported (2) and use that value (640 px) to check and use 
an image matching tfiat size where possible. 



22 SVG files? 

If you have vector images, another option is to 
consider exporting them SVG(Z) files. Like icon fonts, SVG 
images (whether background or inline) will scale well 
regardless of screen size and pixel density. Browser 
support is generally good (IE9+) and file size is typically 
far tower than a PNG/JFG equivalent, 

001 ,svg .logo { 

002 background-image: urlC'lago.svg’) ; 
003 } 


Code library 

All you need to use icon fonts 

You can use icon fonts in a number of ways. They can be inserted 
with data attributes, class names or directly in the markup 

001 $font-face { 

002 font-family: 'hr 1 ; 

003 src: url(*fonts/hr.eot')j 

004 src: url(‘fonts/hr,eot?#ief lx r ) fomatCenbedded- 
opentype r ), 

005 url('fGnts/hr.5vgJ^'hr , ) format{' svg f ) „ 

006 url('fonts/hr.woff r ) format ('raff')„ 

007 url(*fonts/hr.ttf*) format(‘truefype*); 

008 font-weight; normal; 

009 font-style: normal; 

010 } 


First include the Icon font 
using the @font-face 
declaration, with 
different font files for 
different browsers. 


Use the CSS attribute 
selectorifyou want to 
add Icons with data-icon 
attributes. Adjust the size 
to suit 


To addicons with classes, 
set the defaults using 
CSSS substring matching 
attribute selectors and 
use the content property 
to add the Indlv idual 
Icons for each class, 


001 [data-icon]-before { 

002 font-family: 'hr J ; 

003 content: attr(data-icon); 
004 speak; none: 

005 font-size: 5em; 

006 } 


001 [class*=”icon-"]:before, [class*-" icon-"]:before { 
002 font-family: 'hr- 1 ; 

003 font-style; normal; 

004 speak; none; 

005 font-size: 5em; 

006 color; #fff; 

007 -webkit-mask-image: -webkit-linear-gradlent(white,rg 
ba(0 f 0 f 0,0,7)); 

008 text-shadow:0 -lpx black; 

009 } 

010 , icon-chrome:before { 

011 content: 

012 } 



tutorials 


61 
















<lutorials> 


I Tabbed boxes with multiple loops for WordPress themes 


Create tabbed 
boxes with 
multiple loops 
for WordPress 
themes 

This tutorial will teach you how to add a 
tabbed box with content from several 
categories to your WordPress theme 

tools I fecit I trends WordPress, RHP. HTML, CSS and jQuery 
expert Thord Daniel Hedengren 


ometimes you want to offer your 
visitors even more options to dive into 
your site than just a list of posts and 
whatever headline solution you might 
have employed for your front page. This 
" tu torial aims to teach you about one of 

the options at your disposal, namely the 
tabbed box. Well create three different 
loops and let the user switch between 
them using tabs. The same multiple loop 
technique could obviously be employed with sliders or 
whatever solution that suits your fancy. As for the 
tabbed box, well rely on jQuery since it already ships 
with WordPress and is a popular and well known 
JavaScript library these days. 

Before we get to the actual tutorial though. I'd like to 
talk a little bit about tabbed boxes (and content sliders 
for that matter). You see. it is important to use these the 
right way, because if you don't, you're not only adding a 
feature users will ignore, you're adding clutter and site 
weight overhead as well. Tabbed boxes that don’t fill a 
specific need, sporting supporting content or additional 
ways into the site that the visitor will actually want to 
use. just shouldn't be there. There's also the mobile 
aspect to take into account, so make sure your tabbed 
box works well in mobile browsers should you choose 
to include it there as well. 

Use tabbed boxes and sliders with caution: make 
sure you think them through, and you'll be just fine. 
Less is more, you know. 




01 Decide what you’re doing 

Before we attorn pt to do anyth ing at al I, we need 
to figure out exactly what it is we're doing. We'll create 
three separate loops that list content from three different 
parts of the site. For this we are going to use categories 
and tags, so this is where you decide which categories 
to use. For the purposes of this tutorial, we will be using 
the categories Superstar and Movies, as well as the tags 
Duck and RabbiL 


02 Where to put the box 


You obviously need to d ecide whe re you r box 
should be. For this tutorial. I have created a child theme 
for the Twenty Eleven theme, and copied the •ndex.ohp 
file to the child theme so i can make edits without 
having to worry about the theme breaking when it is 
updated by the author. You can do it any way you want; 
the files are available with this issue. 

If you want to learn more about child and parent 
themes, read up on them in the WordPress Codex 
(codex worduress.org/ChiId Thernes) or alternatively 
you can check out my book. Smashing WordPress 
Beyond the Blog. 3rd Edition. 


But really, where did you put 
us the box? 


We want the box to be just above the content, so plan 
to add it under divicontent In index.ohp, Look out for 
the following code in index, php. just below the get_ 
headerO part. 


001 <div id-'primary"^ 

002 <div id= "content'' role= J, main"> 

003 

004 <!-- THIS 1$ WHERE THE TABBED BOX WILL 

BE — > 


C4 Creating a new loop 

Let's start by creating a new loop. We'll use 
WPjQuery to do the. and then well reset it so it won’t 
interfere with other loops on the site. We’ll pass the 
arguments to Ssuperstar and then we'll loop the 
content, like this: 


001 <?php 

002 // Arguments for WP.Query 

003 $args = array( 

004 'category.name' => 

* superstar t 

005 H showposts h => 5 

006 ); 

007 // The new loop stored in 

Ssuperstar 

008 Ssuperstar = new WP_Query( Sargs 

); 

005 while ( $superstar->have_posts() 

) ; $superstar->the_post(); ?> 

010 <1— Loop output goes here 

— > 

011 <?php 


62 


tutorials 








































<Uitoiials> 


Tabbed boxes with multiple loops for WorclPress themes | 



•We now have our n rst 
loop, showing five posts 
from the superstar 
category in a 11st at the 
top of thffi site Estep &} 






IrtXUkirtm 


IMttijpg* 


<Lett ? trip to 1iottoni> 

■This Is wherein put my 
tabbed box of links 


* This Is wlial the tabbed 
box will look like,a simple 
design without the need 
far extensive CSS 


> All three loops are in 
place, each with Iheirown 
list,The next step will be 
to ma ke them a tab bed 
box instead 




?> 


// Loop ends 
endwhile; 

// Reset the query 
wp_reset_postdata{); 


Just what we want 

Let's put this into our loop, also adding a div and 
ul container, like so: 

001 <div id= ,F tabbed-box ”> 


Avoid query, 
postsO 

While it is entirely possible 
to use query_postsO to 
create multiple loops, you 
should avoid doing so 
query_postsO is meant for 
small alterations of the J 
main loop. 


Are they really making sequels tn movies 


This loop will fetch the five latest, posts from the 
category superstar. 

Populating the new loop 

Now, we need some actual output as well. Look 
at the code in the previous step, we'll replace the Loop 
output goes here comment with actual linked titles to 
the posts. We'll place these links in a list, so we need to 


002 <ul> 

003 <?php 

004 // Arguments for wp_Query 

005 Sargs = array( 

006 p category_name J => 

'superstar h , 

007 F showpasts" => 5 

008 ); 

009 // The new loop stored in 


014 <?php the_title(); ?> 

015 </a> 

016 </li> 

017 <?php 

018 // Loop ends 

019 endwhile; 

020 // Reset the query 

021 wp_reset_postdata(); 



put each in a li as well. 

001 <li> 


Ssuperstar 

010 Ssuperstar = new WR_Query( fcargs 

); 


022 ?> 

023 </ul> 

024 </div> 


002 <a href="<?php the_permalink(); 
?>" title="<?php the_title_attribute(); 
?> w > 

003 <?php the_title(); ?> 

004 </a> 

005 </li> 


011 while ( Ssuperstar->have_posts() 
) : Ssuperstar->the_post(); ?> 

012 <li> 

013 <a href-”<?php the_ 

permalinkQ; ?> JP title= FJ <?php the_title^ 
attribute(}; ?>“> 


Don’t forget to reset 

Why do you need to reset the data? Weil, if you 
don't you might end up with an altered query for 
subsequent loops, and that is usually such a headache 
to sort out. Use wp_reset_postdataO after your loops. 



tutorials 


63 













<lutorials> 


I Tabbed boxes with multiple loops for WordPress themes 



Always queue 
properly 

The purpose of using 
WordPress queue 
methods for JavaScript is 
to rely on the platform to 
make sure everything 
is loaded at the 
optimal moment. 


Create another loop 

it is lime to create our second loop, this one with 


016 // Lwp ends 

017 endwhile; 

018 // Reset the query 
019 wp_reset_postdataQ; 

020 ?> 

og Tag instead of category loop 

Wouldn't it bo great if our third and final loop 
gave us five posts tagged with duck and/or rabbit? 
Basical ly, let's remove the category argument and 


017 endwhile; 

018 // Reset the query 

019 wp_ re se tjpostdata(); 

020 ?> 

ijA Three loops 

now we have three different loops-, each in a list 
of their own, Add a heading above the post lists to 
make them stand out from each other. Here's the full 
code, including the wrapping div and ul tags around 


five posts sourced from the Movies category. You'll no 
doubt recognise the code, the only change from the 
Superstar loop being the category and using Smovies 
instead of $superstar, 

001 <?php 

002 // .Arguments for WF_Query 

003 Sargs - array! 

004 'category_naine r -> J movies', 

005 “showposts' => 5 

006 ); 

007 // The new loop stored in Smovies 

008 Smovies = new WP_Query( Sargs ); 

009 while ( $fi»ovies->have_pQ3t3() ) : 
levies->the_post(); ?> 

010 <li> 

011 <a href="<7php the_pemialink0; 7>'' 

title= J '<7php the_titie_attribute(); ?>"> 

012 <;?php the_titleQ; ?> 

013 </a> 

014 </li> 

815 <?php 


replace it with one for tags, this one accepting posts 
tagged with duck and/or rabbit. Both will work, as will 
fust one of them. 

001 <?php 

002 // Arguments for W^Query 

003 iargs - array! 

004 'tag' -> 'duck,rabbit', 

005 'showposts 1 => 5 

006 ); 

007 // The new loop stored in $duckrabbit 

008 $duckrabbit = new WP_Query( Sargs ); 

009 while ( $duckrabbit->have_posts0 ) : 

td uck rabbit->the_post(); 1> 

010 <li> 

011 <a href="<?php the_permalinkO; 

?>“' title='<?php the_title_attribute(); 7>‘> 
012 <?php the_titleQ; 7> 

813 </a> 

814 </U> 

815 <?php 

816 // Loop ends 


each loop so the lists will work properly. 

001 <div id=” tabbed-bo k if > 

002 <!— First loop, 5 posts from SUPERSTAR 

category 

003 <h3>5 Superstar Posts</h3> 

004 <ul> 

005 <?php 

006 // Arguments for WP_Query 

007 $args = array! 

008 f category_name' => 'superstar', 

009 'showposts' => 5 

010 ); 

011 // The new loop stored in 

Ssuperstar 

012 Ssuperstar = new WP_Query( Sargs ); 

013 while! Ssuperstar->have_postsQ ) 

: $superstar->the_post(); ?> 

014 <li> 

01S <a href="<?php the_permalinkO; 

?> J ' title- J '<?php the_title_attribute(); ?>"> 


64 


fuforials 




































<tutorials> 


Tabbed boxes with multiple loops for WorclPress themes | 


016 <?php the_titleQ; ?> 

017 </a> 

018 </li> 

019 <?php 

020 // Loop ends 

021 endwhile; 

022 // Reset the query 

02 3 wp_res e t_postcf a ta (); 

024 ?> 

025 </ul> 

026 <! — Second loop, 5 posts from MOVIES 

category — > 

027 <h3>5 Movies Posts</h3> 

028 <ul> 

029 <?php 

000 // Arguiaents for WP_Query 

031 largs = array ( 

032 J category_na[ne r 'movies', 

033 'showposts' => 5 

034 ); 

035 // The new loop stored in $movies 

036 kiovies = new WP_Query( Jargs ); 

037 while ( $movies->have_postsO ) : 

$r>ovies->the_postQ ; ?> 

038 <li> 

039 <3 href=”<7php the_permalinlk(); 

7>" title=''<.?php the w title_attribute i O; ?>"> 
040 <?php the„title(); ?> 

041 </a> 

042 </li> 

043 <?php 

044 // Loop ends 

045 endwhile; 

046 // Reset the query 

04 7 wp_res e t_postda ta(); 

048 ?> 

049 </ul> 

050 <!— Third loop, 5 posts tagged with 

DUCK and/or RABBIT —> 

051 <h3>5 Duck and/or Rabbit Posts</h3> 

052 <ul> 

053 <?php 

054 // Arguiwnts for WP_Query 

055 $args = arrayf 

056 'tag' -> 'duck, rabbit' , 

057 'showposts' => 5 

058 ); 

059 // The new loop stored in 

$duckrabbit 

060 $duckrabbit = new ViP_Query( Sargs 

); 

061 while ( $duckrabbit->have_postsQ ) 

: $duckrabbit->the_post(); ?> 

062 <li> 

063 <a href-"<?php the_permalinkO ; 

7> ir title= J, <1php the_title_attribute(); ?>”> 


064 <?php the_title(); ?> 

1065 </a> 

J066 </li> 

067 <7php 

068 // Loop ends 

069 endwhile; 

070 // Reset the query 

071 wp_reset_postda ta(); 

072 >> 

073 </ul> 

074 </div> 

The tabbed box design 

For this example we're going to go with a simple 
tabbed box., with each tab heading sporting a nice fat 
line above itself, The active one is highlighted with a 
black line, while the others are differentiated by having 
light grey ones instead. Within the tab is a simple list of 
links with lines separating them. Nothing fancy, just 
something simple. You could of course create anything 
you want; it is all CSS anyway. 

The tabbed box markup 

The markup for the tabbed box is really simple. 
We’ll have a ultftabs with a li for each tab link. Then we'll 
have three div containers, each containing the content 
of each tab. 

001 <gl id-'tabs"> 

002 <1i id-'tab-content-supersta r" 

class= M tab-item active-tab"> 

003 <a href= l 'java£cript:viewTab('content- 

superstar'); ‘'>Superstar</a> 

004 </li> 

005 <li id="tab-eonterit-movies" class^'tab- 
item"> 

006 <a href-"javascript:vlewTab( f content¬ 

ion i es J ); ">Mov i es</ a> 

007 </li> 

008 <li id-' , tab-content-duckrabbit <l 
c lass= " ta b- i tern "> 

009 <a href^" 1 javascript: viewTab{'content- 

duckrabbit') j'^Duck + Rabbit</a> 

010 </li> 

011 </ul> 

012 <div id=s ri tabbed-box J, > 

013 <div id= N con tent-super star' 1 class= J 'tab- 
content'^ 

014 Content for Superstar tab, 

015 </div> 

016 <div id="content-movies" class= w tab- 
content" style-"display; none;"> 

017 Content for Movies tab, 

018 </div> 

019 <div id^content-duckrabbit" 
class= r, tab-content p ' style="display: none; r '> 
020 Content for Duck + Rabbit tab, 

021 </div> 

022 </div> 


Adding some CSS 

Just the rra-kuo a one won't make t ic markup 
look like we planned, so here's the necessary CSS for 
making it work. 

001 ulfltabs { 

002 float: left; 

003 width: im; 

004 margin: G; 

005 padding: 0; 

006 list-style: none; 

007 } 

008 

009 li.tab-item { 

010 float; left; 

011 inargin-bottom; -Ipx; 

012 margin-right: 10px; 

013 padding: 5px 0; 

014 border-top: 5px solid ieee; 

015 } 

016 

017 li.acfive-tab { 

018 border-top-color; #G0G; 

019 } 

020 

021 divfftabbed-box G 
022 

023 div r tab-content { 

024 float; left; 

025 width: 100%; 

026 margin-bottom: 30px; 


Tabbed boxes and 
wid geta reas 


There are a number of things you 
could do with tabbed boxes and the 
technique presented in this tutorial. 
Thanks to thef legibility of widget 
areas, and the plethora of widgets 
available through plug ins for 
WordPress, it might be a better fit for 
your needs, rather than using loops. 
Employing widget areas instead of 
loops is easy. Just create a dedicated 
widget area per tab (Infunctions.ohD. 
as usual >, and then use dynamic, 
sldefoarO to include them ratheTthan 
the loops. This will let you drop 
widgets in the different tabs and 
hence offer whatever functionality 
you might like. You could take it even 
further and let each widget become a 
tab on Its own, although that means 
you’ll have to alter the JavaScript and 
markup quite a hit. 





tutoriaLs 65 











<lutoriaLs> 


I Tabbed boxes with multiple loops for WordPress themes 


027 background-color: #eee; 

028 } 

029 

030 div. tab-content ul { 

031 margin: 0; 

032 padding-top: 5px; 

033 } 

034 

035 div. tab-content ul li C 
036 margin-bottom: 5px; 

037 padding: 0 10px 5px l@px; 

038 border-bottom: Ipx solid fJfBfBfB; 

039 list-style: none; 

040 } 

041 

042 div.tab-content ul li:last-child { 

043 border-bottom-width: 0; 

044 padding-bottom: 0; 

045 } 

Loading jQuery 

The JavaScript that we use for this tabbed box 
requires jQuery, so we need to make sure jQuery is 
loaded. We'll do this in the theme's fnnrtior.s pop 
because it is better than having to add stuff in the head 
section in head&r.oho. This is easily done with wp_ 
enqueue, scnptO, and since WordPress ships with 
jQuery we just need to pass 'jquery' to it. 

001 wp_enqueue_script( 'jquery' ); 

Queuing jQuery 

To properly queue jQue-y well need to create a 
function that we will then hook onto the wp_enqueue 
scripts hook, hence properly including the script the 
way WordPress wants us to, In functions,oho we'il create 
the wd200_scriptloaderQ function that will contain all 
the scripts we need, and then well attach it to the hook 
with add_actionQ. 


006 jQuery.each(elements, function^index, 
value) C 

007 If Is clicked tab 


008 

if (jQuery(this),attr( J id') -- 

tabid) { 


009 

If Show element 

010 

jQuery(this) r css({ 

'display': 

'block 1 }); 

011 

If Make sure CSS is correct for 

tab 


012 

j Query ('If tab-'+ jQuery{this), 

attr( J id')).addClass(’active-tab’); 

013 

> 

014 

If Is not the clicked tab 

015 

else { 

016 

If Hide tab 

017 

jQuery(this).css(( 

'display': 

:'none“ }); 

018 

If Make sure CSS is correct for 

tab 


019 

jQuery( J #tab-'+ jQuery(this), 


attr('id f )).removeClas5('active-tab'); 

020 } 

021 )); 

Registering the 
tabbedbox.is script 

Although we could just include that in the head section, 
it wouldn't be such a pretty solution. Let's register the 
script so that WordPress can use it with wp_negister_ 
scriptQ. The first parameter is the handle well use to 
include it in just a Pit the second points us to where the 
script is located. Note the use of get_stylesheet_ 
directory uriO here, which works with both child and 
parent themes. The script is in the theme's js folder. 

001 wp_register_script( 'tabbedbox_scri.pt 1 r 
get_stylesheet_directory_uriQ . 7js/ 
tabbedbox.jV ); 





001 function wd200_scriptlaader() { 

002 // Enqueue the script 

003 wp_enqueue_script( 'jquery' ); 

004 } 

005 add_action( J wp_enqueue_scripts', wd20®_ 
scriptloader ); 

ie The necessary JavaScript 

™ ™ Now, we need another JavaScript for the actual 
tabbed box. This script basically changes the display 
elements of the tab content containers, as well as 
applying the active-tab class on the active one. 

001 // Function to view tab 
002 function viewTab{tabid) { 

003 // Get all child elements of J 'tabbed - 

box' 1 

004 var elements = jQuery('#tabbed"box'), 
childrenQ; 

005 // Loop through them all 


Queuing the JavaScript 
properly 

Now we just need to add the script registration to the 
function we created in step 15. along with actually 
queueing the script and it should load properly. 

001 function wd2@0_scriptloader() { 

002 

003 // Register your script 

004 wp_register_script( 'tabbedbox_5cript', 

get_stylesheet_directory_uri() . Vjs/ 
tabbedbox.js' ); 

005 

006 If Enqueue the script 

00 7 wp_enqueu e_script( 'tabbedbox_sc ript J 

); 

008 wp_enqueue_script( 'jquery' ); 

009 } 

018 add_action( 'wp_enqueue_scripts 1 , wd?0®_ 
scriptloader ); 



A working tabbed box 

Look at that, we have a working tabbed box! 
Unfortunately there's nothing you'd want to show your 
grandparents in it. so we'll have to add the loops we 
created before. First of all. add another div container to 
wrap the whole thing in. give it the id tabbed-box- 
container and add the following to style,css 

001 stabbed-box-container { 

002 width: 1®0% f 
003 display: block; 

004 } 


lQ Adding the loops 

This is easy enough, just copy ahd paste the 
corresponding loop to each tab content div container 
Here's the Superstar category loop for reference. Note 
the removal of the h3 heading since that doesn’t make 
sense when you have a visual indicator in the active tab. 


001 <!-- First loop, 5 posts from SUPERSTAR 
category —> 

002 <div id-"content -superstar" class=''tab- 
content H > 

003 <ul> 

004 <?php 

005 If Arguments for WP_Query 

006 Sargs = array( 

007 'categcry_name p => 'superstar', 

008 'showposts' => 5 

009 ); 

010 // The new loop stored in Ssuperstar 

011 Ssuperstar - new wp_Query( $args }; 

012 while ( $superstar->h3ve_postsQ ) : 

$5upe rsta r->t he_post() ; ?> 

013 <li> 

014 <a href-'<?php tbe_peniallnk(); 

?>*' title="T?php the_title_attribute(); 7 > u > 

015 <?php the_title(); 7> 

016 </a> 

017 </li> 

018 <?php 

019 If Loop ends 

020 endwhile; 

021 // Reset the query 

022 wp_reset_postdataQ; 

023 1 > 

024 </yl> 

025 </div> 


21 In all its glory 

This is all there is to it. The complete code for the 
tabbed box is on the coverdisc, loops and all. 

Save and test 

You'll find the finished code as a working child 
theme on the disc. The theme is free to use and abuse, 
so take what you need from it ahd build your own. Just 
remember that you need the parent theme installed for 
a child theme to work, in this case Twenty Ten. 


66 


tutorials 









The future of Linux 
is in your hands 

Live booting 4-distro DVD free with every issue 



© 


The magazine 
for the GNU 
generation 

In print and online 

UnuxUsetcoi* 


» The essential read for Linux enthusiasts 
» Exclusive developer-dedicated mini-mag 
» The latest news from the global community 
» Tutorials helping you master new techniques 



Quality print edition on sate at imagineshop .co.uk 
Interactive digital edition on all platforms on sale at 


www.greatd igitalm ags .com good newsagents 














<littorials> 


| Builcl an HTML5 friend-finding apjp: part 1 



Build an 
HTML5 
friend-finding 
app: parti 

HTML5 has some amazing APIs that 
allow web developers to make smart 
sites w :h geolocation aware tech 

tools I tech trends PHP. MySQL HTML5. CSS3 
expert Sam Hampton-Smith 



recent survey showed the 
UK has a smartphone 
penetration of over 50 per 
Ann:::::; cent, meaning more than 

half of UK mobile phone 
users have a smartphone, 
The is fantastic news for us 
web developers, because 
we can really start to take 
advantage of the many 

unique features these devices have, building exciting new 
sites and applications with smartphones in mind, One of 
the benefits of the modern smartphone is that it typically 
supports HTML5 out the box. and in this two-part tutorial 
we'll use one of the other common features - GPS - in 
combination with HTML5's geolocation API to build a 
friend-finding app In the vein of Apple's Find My Friends 
iPhone am. This month we're going to set up the 
server-side parts needed to support our apo. including a 
database, security and the basics of allowing users to share 
thee details with friends. Next month well connect to the 
geolocabon API and use it to present our users' locations. 


68 


tutorials 








































<Uitoiials> 


Build an HTML5 friencl-finding app: part 11 


Create a database 

Our web application is going to need a database, 
server-side scripts and client-side scnpts to work. We'll 
start off by creating the database, and for this project 
we've opted for MySQL as the database system. Create 
a new database on your Webserver and name it 
Triendfinder'. Ask your host if you're unsure of how to 
access your MySQL database. 




008 'longitude' DOUBLE NOT NULL r 
009 'hidelocafion' INfT NOT NULL , 

010 PRIMARY KEY ( 'userid' ) 

011 ) ENGINE = MYISAM ; 

A word on security 

For the purposes of a tesLyou might be 
tempted to store the user's password as plain text, but 
you should never be tempted to do this. Instead, when 
it's time to store data in our table, make sure you run 
the password through an MD5 hash to encode the 
password data. It's essential to consider security at 
every stage. 


0 2 Create a user table 

The core functionality of our app will be to 
enable friends to see each other's locations on a map. 

To do this, we'll need somewhere to store details - a user 
table. This will need to store both the user's details, such 
as their name and email address, and their Sast known 
location expressed in latitude and longitude. 



we're also going to require users to log in with a 
password, and well give them a marker to allow them to 
go private with their location. Although this isn't strictly 
necessary (as they could jusi leave the webpage), it's 


relationships between a user and their approved friends. 
To make it more user friendly, we're also going to allow 
users to approve friends fora limited period of time, so 
well create a field to store a permission expiry date. 

001 CREATE TABLE friendfinder','friends 1 ( 

002 'userid' INT NOT NULL f 
003 'friendid' INT NOT NULL , 

004 'expires' DATETItC NOT NULL 
005 ) ENGINE = MYISAM ; 



001 CREATE TABLE 'friendfinder'. users' ( 
002 'userid' INT NOT NULL AL/TO_INCREMENT r 
003 'firstname' VARCKARC 100 ) NOT NULL r 
004 'surname' VARCKARf 100 ) NOT NULL , 
005 'email' VARCHAR( 255 ) NOT NULL , 

006 'password' VARCHAR( I00 ) NOT NULL „ 
007 'latitude' DOUBLE NOT NULL f 


app to automatically allow access both ways when a 
user approves a friend for access, but we suggest that 
each user should approve their friends independently 
for maximum security. This means that when we 
perform lookups later on, it's important to know who 
has approved whom - rather than Just who is 
connected to whom. 


07 Sign-up forms 

Well need to provide some form of method for 
users to register with our website, so let’s start by 
creating a basic HTML form to collect the user's 
details. Keep in mind that we'll need to create form 
elements for all the data we defined in the user table. 
Save your HTML page as ’ reefster.pfip' n anticipation of 
the next step! 

001 <!doctype html> 

002 <html> 

003 <head> 

004 <meta charset="UTF-8"> 

005 <title>Friend Finder - Create An 
Account</title> 

006 </head> 

007 <body> 

008 <fortn action-’register, php” 

itiethod="post J ’> 

009 <Label>Firstname cinput type="text” 

naine="f i rstname” placeholder="First name" 
/><span>Enter your first name^/span></label> 

010 <iabel>Sumame <input type="text” 

name-lastname” placeholder=”Last name" 
/><span>Enter your family name</spanx/label> 
011 <label>Endail <input types”text” 

nane^'email" piacehalder= "Email address” 
/X.span>Enter valid address</span></label> 

012 < label Password < input 

type-'password 11 name-" pas sword" /xspan^Minimum 

6 characters</spanx/label> 

013 <label>8nbsp; <input type="submit" 

value=”Register with Friend Finder” /x/label> 
014 </form> 

015 </body> 

016 </hti!nI> 

Store the data 

The fo-m we've just created costs back to itself, 
so let's add some RHP processing at the top of the page 
to handle post-backs and write the submitted data to 
the database, Add the code shown to create a simple 
implementation of this. Substitute in the connection 
details for your own MySQL database. 

001 <!doctype html> 

002 <html> 

003 <head> 

004 ■qneta charset="UTF-8"> 

005 <tit!e>Friend Finder - Create An 

Accou nt </t i tl e> 

006 </head> 

007 <body> 

008 <?php 

009 if (isset($_POST[‘firstname’]) 

8& isset($_POST['surname’]) &&, isset(£_ 

POST['email*]) isset(SjPOST['password'])) { 

Now that the form has been submitted, let's go ahead 
and create the account in the database. 


tutorials 


69 





















































<Uito rials > 


| Builcl an HTML5 friend-finding app: part 1 


001 Sfirstname = $_POST[*firstriame']; 

002 {surname - S_POST[ 4 surnaine']; 

003 {email = S_POST[ H email' ]; 

004 Spassword - $_PQST[ 4 password']; 

005 

006 $db = mysql_connect("localhost” t 

"friendf'inder”, “dbpassword”) or die("ERRQR: 
unable to connect to the database server,”); 
007 inysq 1 _se 1 ect_d b(“f r iend finde r" , Sdb) 

or die TERROR i unable to connect to the 
database,”); 

008 

009 tsql = “INSERT INTO users 

(firstname, surname, email, password) VALUES 
('{first name','{surname' ,'{email' /Spasswo 
rd*)*; 

010 Sresult = mfysql_query($sql) or 

dieC 4 ERRORi unable to query the database, <! — 
”.$sql. ; 

011 mysql_close ( ) ; 

012 

013 } else { 

014 7 > 

015 <form action^” register, php" 

method="post ft > 

016 <label>Firstname <input type="text” 

name=”firstname” placehclder=”First name” 
/xspan>Enter your first name</spanx/label> 
017 <,label>Surname <input type= H text” 

name-'lastname” placeholder- -Last name” 
/xspanoEnter your family name</5panx/label> 
018 <label>Email <input type=”text” 

naie=' r email” placeholder=”EinaLl address” 
/XsparOEnter valid address</spanx/label> 

019 <label>Password <inpgt 

type-'password” naroe-'password” /Xspan>MininMI 
6 characters</spanx/label> 

020 <label>&nbsp; <input type=”submit" 

value=”Register with Friend Finder” /x/label> 
021 </form> 

022 <?php } ?> 

023 </body> 

024 </html> 


09 Error checking 


As with any user input, we need to ensure we've 
validated it before writing it to the database, and most 


Importantly, protect ourselves against any SQL injection 
attacks. We can do this with a couple of utility methods 
to clean the input and validate it. Update your code to 
match our changes. The code for this step can be found 


on the coverdisc. 


IQ Create a log-in form 


Once the user has registered, they'll need a way 
to log in. This is simple to achieve - create a form to 
collect the user's email address and password, then run 
a query on the database using the submitted values to 


check for validity. If the credentials are good, a row will 


be returned and we can create a user session. 


001 <!doctype html> 

002 <html> 

003 <head> 

004 <meta eharset=”UTF-8”> 

005 <title>Friend Finder - Log In</title> 

006 </head> 

007 <body> 

008 <?php 

009 if tisset(S_POST[ 'email']) && isset({_ 

POSTC*password'])) { 

010 If The form has been submitted, so let's 
check the details 

011 {email = cleaninput($_POST[ ' email’]); 

Clean the email address 

012 {password - md5($JP05T[‘password']); 

013 Password has been MD5 hashed 

014 $db - mysql .connect("local host”, 

"friend finder”, 44 dbpas sword”) or die(“ERR?OR] 
unable to connect to the database server."); 

01B mysql_selec t_db ( “f r iendf inder ” r let)) 

or die(“ERROR. unable to connect to the 
database, 

016 Isql = "select * from users where 
em7il=’ {email' and passworch’ Spas sword'”; 

017 {result = mysql_query({sql) or 

die(“ERRGR: unable to query the database. <! — 
”.{sql. 

018 mrysql-closeO; 

019 if {inysql_num_rowsC$result)>0) { 

020 // We've got a record, so the user has 
provided good details 
021 } else { 

022 // No records returned - so it’s an invalid 
username and password combination 

023 } 

024 } else { 

025 ?> 

026 <form act ion-" log in. php” method-”post"> 
027 <label>EmaLl <input type-”text” 
name=” email” placeholder^” Email address" fxf 
label> 

028 <label Password <input type="password” 
name=”pas sword” /X/label> 

029 <label>&nbsp; <input type- 'submit” 
value=”Log In” /x7label> 

030 </fornr> 

031 <7php } 7> 

032 </body> 

033 </html 
034 <?php 

035 function cleaninput(Sinp) { 

036 // This function cleans out any bad strings 
before insert to database 
037 if(is_array({inp)) 

038 return array Jt^p( _METHOD_, Sinp) ; 

039 if(!empty(Sinp) && is_£tring({inp)) { 

040 return str_replace(array( i \\ t , lI \0 dd , 
"\n dd , "\r*, “ ?d * p M \xia") r array('S\\V , 

4 \\@ d , '\W , - \\r ', Hi \V\ 4 \V** P 
Sinp); 


Building for mobile 
devices 


Website design for mobile devices Is 
exactly the same as design for a 
desktop. The only real difference yon 
should consider Is the screen real 
estate, and lack of a mouse, Otherwise, 
all the same skills you employ In 
designing for a regular computer will 
apply here. 

There ate lots of online tools that 
can help you quickly design effectively 
for mobile platforms. These vary from 
simple CSS frameworks that help you 
define rules appropriate to the device, 
to fully-fledged webapp development 
systems. In this tutorial we touch on 
using jquery Mobile, which falls Into 
the latter category. 

iQuery mobile also has an excel lent 
resource, ThemeRoller, for creating 
aesthetic tr eatments for your mobile 
sites. This works really well If you're 
using the standard user controls. Don't 
be afraid to think outside the box 
though - it often pays to be original 
with user interface. 



041 } 

042 return {inp; 
043 } 

044 7> 


Create an invitation 

We're going to allow users to invite their friends 
to view their location on a map. To do this well 
create another page and form, this time asking a 
logged-in user to enter the email address of the friend 
with whom they want to share their location. We'll use 


70 


lulnrials 


















<Uitoiials> 


Build an HTML5 friencl-finding app: part 11 


this to generate an email to the friend, inviting them to 
accept the offer. 

001 <Jdcietype html> 

002 <html> 

003 <head> 

004 <meta char5et=”inT-8 s '> 

005 <title>Friend Finder - Invite</title> 

006 </head> 

007 <body> 

008 <7php 

009 if (isset($_FOST['email']) && 

is5et(t_ 

P0ST['nai*e h ]» { 

010 // The form has been submitted, so 

let's check the details 

011 

012 Semail = cleaninput($_POST[ 4 email r ])j 

// Clean the email address 

013 Inane = cleaninput(IJPOST['name']); 

// Clean the email address 

014 

015 $db = mysql.connectCMocalhost”, 
44 friendfinder", 44 dbpassv«}rd”) or die (“ERROR: 
unable to connect to the database server,"); 
016 mysql_select_db( cc frLendf inder” r $db) 
or die(“ERROR; unable to connect to the 
database."); 

017 // $sql - 44 ,. 

018 // Sresult = mysql_query(Ssql) or 
die ( 44 ERROR: unable to query the database. 

<! — 

019// iDysql_close(); 

020 } else { 

021 ?> 

022 <forn action-'invite.php" 
method="post”> 

023 <label>Friend's Email <input 

type=”text” name=”email” 

placeholder=”Friend’s 
Email address" /></label> 

024 <label>Friend r s Name <input 

type=”text” nane=”name” placeholder^ ri end's 

Name” /x/label> 

025 <label>&nbsp; <input type= ff submit” 

value=”Invite to share your location" /></ 
label> 

026 </forn£> 

027 <?php } ?> 

028 </body> 

</html> 

<7php 

029 function cleaninput(Sinp) { 

030 // This function cleans out any bad 

strings before insert to database 
031 if(is_array(linp)) 

032 return array_map(_METHOD_, Sinp); 



033 if(lempty(linp) is_string($inp)) { 
034 return str_replace(array( i W, w \8”, 
44 \n", "\r* t iitn t *"*, 44 \xla"), arrayt'WW, 
*U0\ *Un\ H \\r\ *\V W , 4 \\ B, P 4 \\Z') P 
Sinp); 

@35 } 

036 return $inp; 

037 } 

038 7 > 

12 Store pending invitations 

For security, we can’t rely on passing the user 
and friend details through a URL. Instead, we’ll create 
another table for pending Invitations and send an email 
that uses the primary key in the accept address to 
abstract the user’s details, Create a table to store the 
friend’s details, then check to see if the friend already 
exists before sending an email to invite them. 

001 CREATE TABLE 'friendfinder*.'invitations' ( 
002 'inviteid' INT NOT NULL AUTO_INCREMENT 
003 'userid' INT NOT NULL r 
004 ^name' VaRCHAR( 255 ) NOT NULL , 

005 'email' VARCHAR{ 255 ) NOT NULL , 

006 'approved v INT NOT NULL , 

007 PRIMARY KEY ( 'inviteid' ) 

008 ) ENGINE = MY I SAM ; 


13 Handle invites to non-users 


^ f a friend receives an invite before they’ve 
created a user account, we need to invite them to 
create an account before they can accept the invitation. 
To do this, we ll redirect them to our register form, 
pre-fiiling their email address and name from the 
pending invitation table, 


Test 


■ v N'ow we’ve got our complete set of server-side 
scripts set up. we need to thoroughly test the 
functionality. To do this you're going to need to create 


several accounts, with different email accounts, and 
invite different 'friends’ to check the emails work. Make 
sure the database records are setup accordingly. 


15 Make it pretty 


Th e chances are that visitors to our site will be 
accessing from a mobile device, especially once weVe 
added the geolocation positioning in next month's 
concluding part. Add some basic CSS to give your 
pages a smartphone orientated design. Make use of @ 
media queries to change the design to fit the screen 
size of the device accessing the page. 


Codiqa 


fUD 



tutoriaLs 


71 





































<Uito rials > 


| Builcl an HTML5 friend-finding apjp: part 1 



jQuery mobile 

The main application, once a user has signed up 
and invited friends to view their location, will consist of 
an interactive map that shows the device's current 
location, and super-imposes the position of local friends 
onto the map. To make this easier well use jQuery 
mobile, found al www.iquervmobile.com 



17 Create the skeleton 

The final thing we need to do (before moving on 
to the client-side script next month) is to create the 
skeleton [Query mobile page that will hold all our user 
interaction with the map. Create a new page using the 
code shown, and save it as 'friend-finder.htmr. Make 
sure you've included the jQuery libraries. 




Code library 

Register your users 

Our app will make use of user records to let friends share their location 
with each other. First they need to register an account. Full code on disc 


This section of PHP 
code checks to see If 
the form has been 
submitted, and If it 
has, it cleans up the 
Input and creates a 
user record within 
the database. 


We store the 
password with an 
MD5 hash. This 
means the password 
Isn't plain tent any 
more, and provides 
additional security 
for our users. 


Our form makes use 
ofthenewHTMLS 
input type email to 
allow for browser-led 
validation, ttalso 
means that on mobile 
devices the 
sof t-keyboard will be 
Specific lo t he data 
type being entered. 


001 c’doctype html> 

■002 <html5- 
003 <head> 

004 <meta charset=”IJTF-8 r > 

005 <title>FrierK] Finder - Create An Accountstitle> 

006 <link rel="stylesheet" href=''styles/screen.cs5” type-’text/ 

css" O 
007 </head> 

008 <body> 

009 <?php 

010 if (isset($_FOST[ f firstname']) && issetltJ^OSTL"surname 1 ]) 

&& isset(S_P0ST['email’]) && isset($_PDST['password'])) { 

011 // The form has been submitted, so let's create the 

account in the database 

012 

013 $firstname = cleaninput($_PQ5T[‘firstname 1 ]); // Clean 
the first name 

014 Ssurname = cleaninput ($_P05T[*surname’]); // Clean the 
last name 

015 Setmail = cleaninput(S_POST[‘email’]); // Clean the email 
address 

016 Spassword = md5($LP0ST['password’]); // Password has 
been MD5 hashed 

017 

016 Sdb = mysql_oonnect("localhost”, “friendfinder”, 

“dbpassword") or die(“ERROR: unable to connect to the database 
server,"); 

019 mysql_select_db("friendfinder" r $db) or die("ERROR: 

unable to connect to the database."); 

020 

021 Ssql = “INSERT INTO users (firstname, surname, email, 
pa ssword) VALUES ( H tfirstname', r $su rname ? , r $ema i 1 * / $password ')"; 
022 {result - myaql_query($sql) or die (“ERROR: unable to 
query the database, $sql,”—>>'); 

023 inysql_closeO; 

024 

025 > else { 

026 7> 

027 <form actionp'Tegister.php” method="post”> 

028 <label>Firstname <input type="text’' name="firstname" 

placeholder=”First name” /Xspan>Enter your first name</spanx/ 
label> 

029 <label>Surname <input type-’text" name-’lastname" 

placeholder=”Last name" /Xspan^Enter ycur family narne</spanx/ 
label> 

030 <label>Emai1 cinput type="text" name=”email” 

placeholder=”Email address" /xspan>Enter valid address</spanx/ 
label> 

031 <label>Password <input type=''password" name="password” 

/Xspan^Miniimm 6 characters</sparix/label> 

032 clabel^Snbsp; <input type=”submit" valueF"Register with 

Friend Finder” /X/Iabel> 

033 </form> 

034 <?php } 7> 


72 


tutorials 



























Design for a better web 



hobbyists and professionals 

Back issues 

isl K4H l- u- Ej-mxl-ix- TO? 

• siiis.isi desraner P.vf 


itufinln; wrtiiw 


<rsaf'«9 sl 


DVDs 


Web Desert: From Desktop 
to Dotcom eMag Vd, 1 

A visual fcuide to Flash. 
Dreamweaver and Photoshop. 
256 pages of waUdhraughs 
nr one disc* A project-based 
workout lor a ny webshngflf I 
Master tools, receive technical 
advice and read inspirational 
features. 

£4,99 


mm 


BWeb Design Vol. 6 

Creative gutfes ror designing 
next’gen websites, in-depth 
features to bring you up 
to spaed or all the hottest 
technologies. Step-by-step 
tutorials showing you how¬ 
to design amazing website! 
using CSS3.HTML5. Flash. 
Photoshop and more 
£14.99 


Web Des^n VbL5 

Tiusbook provides a 
comprehensive collection ot 
visual lessons on t he es-senl iai 
techniques needed to create 
awe -i rre paring websites. 

£6.49 with code "DOTCOM" 


Web Desigpcr eMag Vo|. 1 

Enjoy 21 isswsof Web 
Designer on one interactive 
drsc. Over 1800 pages 
of expert tutorials, case 
studies & features, Plus 
bon us tutorial workshop files 
included. 

£9.99 


The Web Design Book Vol. 1 

Bringing you up to speed with the new digital 
landscape, the The Web Design Book Vol. 1 will 
give you a tour of the latest developments in 
web design and show you how to use these new 
tools to create a truly or igi nal s ite. 

£14.99 


Web Designer eMag Vol. 2 

A complete archiveofweb 
Designer magazin e issues 137- 
MS. Over 824 pages of cutting- 
edge trends and techniques! 
Free - 25G page Web Design 
Vof. 03 boefc.azine included In 
pdt format. 

£9.99 


Order online 


die&gnerf 


Become an ImagineShop 
customer and leave reviews of 
your favourite products. 


Add creativity and flair to your online projects 
with an essential range of training products for 


& @imagineshopuk 


G /imagineshopuk 


MAGAZINES 


BOOKS 


DVDS 


DOWNLOADS 


GIFTS 


















<lutorial£> 


Need an Inspirational site dlssected7Q webdesigner@lniaglne-publishing.co.uk 



Get creative with CSS 
transitions 



INSPIRATION 


Lovingly crafted 
rollovers 


inspiration iulie nrenvoy e.com 


The main portfolio consists of some 
large thumbnail images of the projects. 
These thumbnails have been given a 



Note 


presented to the user, rather than just 
loading In one element at a time. This 
gives the website a lovingly crafted 
feel and the impression that Renvoye 
pays dose attention to the minor 
details that make a project successful, 
The layout is clean and clea re¬ 
presented with a nice info 
graphic at the end of the 
page that shows 
Renvoye's location and 
areas of expertise. 


m Link to top 


As you scroll down the page you 
become aware of a button appearing 
which is anchored to the bottom 
right-hand corner. This button is a 
quick link back to the lop of the 
page, and the menu for the site. Little 
touches like this help to make the 


custom shape. In order to alleviate much 
Photoshop frustration, the thumbnail is a 
regular square image with a mask placed 
over the top. This is simply a transparent 
PNG on which the edge is the same 
colour as the background. When you roll 
over the images, the mask uses a CSS 
transform to scale it slightly. This allows 
you to see a little more of the 
thumbnail image below. A great 
touch that highlights a clever use 
of transitions. 


THINGS YOU 

SHOULD 
KNOW SPT 


SAN C l EGO 


Presentation 
Each element of the 
design animates into 
position using CS53 
transitions. This gives 
the feeling of presenting 
the site as opposed to it 
Just loading. 


Infographic 
The bottom of the 
page shows the many 
skills that the designer 
and illustrator has so 
that peop le know 
exactly what his area 
of expertise Is 


Thumbnails 

The portfolio thumbnails 
appear one ata time by fading 
i n, They appea r from a central 
position on the page, then 
zoom out to their fina I 
position, giving them real 
Impact as they arrive. 


Image masks 

The portfolio thumbnails 
are cleverly created, with 
image masks over the fop 
of the thumbnail images 
to give them that un [quo 
and distinct shape that 
makes them stand out. 


Rollovers 

The thumbnail images 
have a subtle rollover 
effect created using CSS3 
transitions. The mask over 
the top of the thumbnail 
gets slightly larger., 
allowing the user to see 
more of the portfolio 
thumbnail image. 


;;;;;; i:;:;:;:;: hen you first load the 
P a 9 e to Julien 
Renvoye's portfolio you 

»+»*»*«- s + a + s i + b*m+ viviv 

:::::::::::: are met with a blank 

SSgjj: screen and loading bar. 

What follows is the kind 
of motion graphic 
animation that became 
associated with the best sites created 
In Flash. The page builds up by each 
element using a series of CSS 
transitions that allow the page to be 


Preloader 

The site uses a proloader, 

which is the orange bar 
along the top-edge of the 
site. This shows the 
loading before showing 
the actual site and 
starting th e an f matten, 


74 


web workshop 


















































<Uitoiials> 


Get creative with CSS transitions | 



^comment* 


Whafiour 

experts, think 
oftheslte I 


One page portfolio 

"J Li lien Renvoyes portfolio site is just a single page to hold the content with 
the actual content being shown on new pages. The idea of presenting your 
portfolio content on the homepage is good because it presents the user with 
the relevant content as soon as the page toads." 

Mark Shuffle bottom 



technique 


Rollover CSS mask transitions 


01 Set up the document 

Creates new HTML document In Dreamweaver 



Add the mask 

We now add tiie mask CSS code. Notice the 


and add the following code to the document, We are 
going to recreate the scaling mask rollover effect using 
CSS3 transitions. This sets up an unordered list with a 
container div that holds the mask div, and the image div 
that holds the image to be masked out. 

001 <ul class= fl thumb M xli> 

002 <a href'"# ri > 

003 <div class= JJ thumbContainer"> 

004 <div class= JJ mask H x/div> 

005 <img src=' f images/thutnb01. jpg M /> 

006 </divx/a> 

007 </lix/ul> 

02 Style the document 

In the head section of the IITML document add 
the following code to create the CSS styles. Here we set 
the background colour of the document. The next line 


transition time, this is fast so that it is responsive to the 
user. When the rollover is called it will be done at this 
speed. The image itself is a transparent PNG shape. The 
centre of the PNG is cut out so that the image 
underneath can be seen through it. The z-index is made 
to the highest on the page. 

001 .mask { 

002 -webkit-transition: all 0.3s ease; 
003 position: absolute; 

004 background: url(images/thumbMask. 

png) no-repeat center; 

005 left: 0; 

006 top; 0; 

007 width; 273px; 

008 height: 293px; 

009 z-index: 999; 

010 } 


gives us the transition effect, using the scale property to 
increase the size slightly, Notice that we have only 
Included one browser prefix here for brevity in the code. 

001 body {background: #202024;} 

002 ul.thumb li:hover .mask { 

003 -webkit-t ransform: scale(1.1); 

004 } 


03 Style the container 


^ we apd the CSS code new for the container, 
which holds both the mask and the image. This is set to 
a specific width and height in order to keep the mask 
and the image aligned at all times. The overflow is set to 
hidden to stop any nasty movement when the mask is 
increased In size on rollover. Here we'vs set autoplay to 
false and told the slide links to open In a blank window 
so that the main page stays open behind it. The last 
option is the actual portfolio slides that will be shown in 
the background. 


001 . thumbContairier 
002 { 

003 width: 273px; 

004 height: 293px; 

@05 display: block; 
006 overflow: hidden; 
007 } 


os Add the thumbnail 


~ * Finally we add the thumbnail image, which Is 
positioned two pixels smaller and one pixel in from the 
left and top so it can’t be seen at the edge of the mask, 
Note that the z-mdex of this div is set lower than the 
mask so that this is always behind the mask on the 
page. Save the document and test this out in your 
browser to see the transitions. 


001 

,thumbContainer 

img { 

002 

position; absolute; 

003 

left: lpx; 


004 

top; lpx; 


005 

width: 271px; 


006 

height: 291px; 


007 

2-index: 990; 

} 

008 

</style> 




Creating a mask saves 
you having to apply 
complicated shapes 
to every thumbnail 
that you create. 
Instead, create one 
sha pe of mask and 
□ pp ly this to every 
image incode. 



TECHNIQUE 

Creating the mask 


To create the rollover effect we need a mask 
that will cover our content, so to make this 
we need to fire up Photoshop to start 
creating an image that has areas of 
transparency. This will enable us to see 
through it to the thumbnail image below. 



Make the image with a transparent 


background then click okay to create it. Add 
a new layer and fill it completely with the 
same colour as youVe used In the 
background of your web page. 



Use the vector shape tool. «t comes 
in a variety off shapes and there are custom 
shapes as well. Select an appropriate shape 
and draw this within the document. Now go 
to Layer>Rasterlze>Choose Layer. 



Selectand delete 

Go to 5elect>Load Selection end click 
OK in the pop up window. Turn off this 
shape layer and choose the filled layer from 
step 1. Hit the delete key to remove the 
shape from the layer. Finally save the image 
as a transparent PNG image. 


weh workshop 


75 




















<lutorial£> 


Need an inspirational site dissected?0 webdesianer@iniagine-publishinig.co.uic 



Mainstream 
banner styles 

inspiration www.theworldwelivein.co.uk. 

www.qeorqebadea.com. 

www.malaqa-creation.com/#aqence 


:::::::::: o doubt you've spotted 

|||||s|:||L :::::: examples of corner 

ribbons, small ribbon 
badgesandlogobanner 
"IlllljlH navigation bars around 
” -- ;j -i ” the web. They're not new, 

but the bevy of examples 
make these trends 
mainstream. But what are the reasons behind this 
newfound popularity? Many examples can be 
seen In portfolio, one-page and 'coming soon' 
website designs. Their application seems a direct 
response to presenting work over a host of 
devices, including smartphones and touch, tablets. 

A smaller screen space usually prompts more 
white space Therefore standing elements need to 
be straightforward in build, yet sophisticated in 
style, which many banner examples are. Drop 
shadows, embossed and texture effects, 
illustrated elements, and rich gradients all add 


something. Photoshop CS6, with its latest Shape 
tool options makes the creation of banners and 
the like much easier Ul designers can now apply 
many visual effects from one location. 

The Photoshop CS6 Shape tool options offer 
users the abili ty to add solid and gradient colour, 
and importantly, styled border effects through 
Stroke settings, Here you can apply another 
popular technique used in modern web design at 
the moment, creating a stitch effect - up until now 
this has been a drawn out manual process. 

Furthermore, these latest Shape tools are now 
wholly vector-based. This means that resizing 
assets for use across multiple devices and multiple 
resolutions can be done freely. Pixelation and the 
use of Smart Objects to control asset delineation 
is no longer necessary Here we show you the 
ways to create said assets with these new CSS 
tools and others that can be Implemented to 
improve your banner creations. 



What our 
experts mink 
of tiie site 


Importing vectors with Photoshop CS6 

“Those who create in Illustrator and apply effects in Photoshop will be 
pleased to know the two are more allied than ever. When pasting 
vectors into Photoshop you no longer have to force resolution, 
pasting into a designated selection space. Photoshop CSS now pastes 
vector shapes from Illustrator that always align to the pixel boundary." 

Adam Smith 



WHAT I DO 

In EDdiy'icDmpetiliw online linikip. ifi vital that your brand Imip it original, un ique 



TECHNIQUE 


Create a 
web ribbon 


We're seeing more and more tangibly 
textured web elements, but carbon and 
gloss effects still ring true with many digital 
designers. So here were offering up an 
opportunity for everyone who loves web 
20 styles to see how you apply these to 
your web ribbons. 

Creating these isn't all that hard, utilising 
the power of Photoshop Laver Styles and 
the Gradient tool. Follow these three easy 
steps to discover how to apply these. 



0] Masking your shape 

Create a light grey rectangle using 
the Rectangle Shape tool. Using guides, 
make a selection with the Rectangle 
Marquee tool, holding Shift for 45-degree 
angles. Apply 3 layer mask to this selection, 
activate the mask, and invert it (Cmd/CtrN). 


Layer Style effects 

Open your Layer styles dialogue 
and apply Gradient Overlay - gradient 
style Silver - from the Metals presets. Set 
Opacity at 75 %. Apply a saturated blue 
colour with Color Overlay, setting Blend 
Mode to Screen, and Opacity at 35 %. 


03 Apply gradient 

Cmd/Ctrl-clIck your shape layer 
Vector mask, Select the Elliptical 
Marquee tool, and holding Alt, apply to 
create a concave selection. Apply a 
White to Transparent style Gradient tool 
to this, and Drop Shadow settings. 


76 


web workshop 














































































<Uitoiials> 


Mainstream banner styles | 


wot * CONTACT 


- Supplement 
ribbons 

Here you can see how 
web ribbons have 
been applied to 
reinforce the cha racter 
of this personal 
one-page website, 
displaying the 
des igner's age. 



Cir cular logo 

The effects shown here 
a re contemporary again 
reflecting the designer’s 
portfolio, Stitches and 
drop shadows have 
been applied to the 
main logo to add depth, 
and a sense of the 
tangible,as is 
- fashionable at present 



Alternate looks 

In each case presented the banners 
are anchored by a strong circular 
logo. However, the re are many other 
examples of banners that go down a 
more radical design route. Much like 
www.D3doLCom.nl with its floating 
interface, or using the triangular 
shapes seen at tekkuafor.de. 


K- tlOC M-. CONTACT 


Welcome 

to our one-man design sti 

We craft clean Ky j web experiences, 
that wc A y devices. 


tdio! 


- Type and colour 

Perfect balance 

1 

Less is more 

The carbon effects here 

Here the designer^ 

This website has the 

aren’t only heightened 

logo sits central to the 

same creative harmony 

by the texture appl kid 

option bar, creatin g 

as. before. However, 

to the options bar, but 

symmetry with the 

here the embossed 

al m the juxtaposition 

perf ectly spaced and 

11 nes re place defl n able 

of small accents of 

nu m bered options 

options, with the logo 

colour , applied to the 

situated each side. This 

as an anchor to still 

logo graphics and 

strikes up a focal point 

create a sense of a 

creative type. 

and creates a clean. 

banner in the actua 1 

— 

harmonic banner. 

absence of one. 



INSPIRATION 

Embossed effects 


Embossed effects are noticeable with menu bars, but 
now creative web type styles have adopted this 
method. Previous editions of Photoshop required 
manual effects, but CS6 allows you to create them fast 
Doing so is simple. Just choose your font, type out 
using the Type tool then Cmd/Ctrl-click your layer 
selecting Convert to Shape. Now your previous Type 
layer is subjected to the same options as all Shape tool 
elements, from the new Shape options. He re you can 
set a similar colour to your type from the background, 
combining low value Stroke settings and Inner Shadow 
Layer Style settings to create embossed effects. 
Furthermore, these are fully recallable now being vector. 




TECHNIQUE 

Create a wrap 
around ribbon 


We’ll shew you how to work up this asset in a 
matter of minutes using Photoshop CS6 Shape 
tool options, working up stitch and colour 
effects along with drop shadows. 



Apply a Rounded rectangle shape 
with a Radi us of 2px to your i Pad-screen 
sized C720 x 1260) template. Using guides, 
make a selection with the Rectangle 
Marquee tool, holding Shift for 45-degree 
angles. Apply a layer mask to this selection 
and invert this (Cmd/Ctrl+I). 



Create a darker small square with the 
Rectangle toot, place behind your template 
and. holding Cmd/Ctrl, move the bottom- 
corner point up to meet the top-comer 
pcHint at a 40-degree angle. 



shape,, on top and inside the guides of your 
Rounded Rectangle shape- Apply a white 
colour dashed line style from the Stroke 
Options, masking away both ends. Apply an 
Inner Shadow Layer Style and text to achieve 
fortifier effect. 


web workshop 


77 






























200 th issue special 


Go digital today 

• Fully interactive 
editions 

• Download direct to 
your device 

• Save up to 40% off 
the regular price 

• On-sale worldwide 
the same day as the 
print version 








@HTML5 &CSSH ^jQuery ® WorclPress 
Special guest edited: 

MattMullenweg 


ww w,we bdesi g nerma g,co, u k 

The king of CSS speaks 

Eric Meyer 


Great digital magazines on iPad /iPhone 


ESI 


ftpfHwttotJei 

hiiinUMitpvAn -'rtrtg 

H0i Qt w* t3» fcorfeng ft * wmwf iMter n 
une m Qr*u 

Ttn CnUUteiifvctiarb t MCide,(r jpvfeiJbr 
«VJT¥ W *n^*ll»T3 Wiki Wtlhr* cl IMh 

bwfltJddi bw 

tnb-n WT^fydMC&Y. rdfv fw^vln I r 
wb*M Ma«umvi>9ICklinlll( 


tjif zinio Apple Newsstand 


Chances are. if you've been browsing 
the latest JavaScript libraries or CSS 
frameworks, or even just checking 
out demos of cool techniques 
created by other developers, you’ll 
have seen a link to a page on GitHub 














































Android phone / Android tablet / Apple Mac / Windows PC 




N l-f'l (RiTjIf^-fnTUcjtw^ A 

Ml ||t lulLrt 


OTt gc.|h—|inct'f Inlahii 

frm ttiROiiMlftrt 


Save 
up to 

40 % 

off regular print 
prices 


nUf ill s Jk «puibf ip*u 


Download and 
enjoy over 20 great 
magazines on your 
favourite topics... 

* Technology * Creativity 

* Videogames * Sci-fi 

* Science & knowledge 

* Digital Photography 


Enjoy great magazines 
on every device from 
one amazing website 

Get your digital copies now at 

WWW.greaMigitalm9gS.c0m 









■ PHOTOMANIPULATION ■ GRAPHICS ■ NEW MEDIA ■ PHOTO EDITING ■ DIGITAL PAINTING ■ TYPOGRAPHY 



WANT TO MASTER 
PHOTOSHOP? 


Inside every issue: 

► Over 45 pages of pro techniques 

► Inspirational artwork and interviews 

► In-depth features on cutting-edge trends 

► The latest creative products reviewed and rated 

@advancedpshop * i /Advanced Photoshop PhotOShop.co.uk 


Get your copy today 



Quality print edition on sale at imagineshop .co.uk 
Interactive digital edition on all platforms on sale at 


www.greatdigitajmags .com 


Also available at all 
good newsagents 























Google Dart ^ JavaScript A/ .net AS3Q 


AIR 4^ ColdFusion CF RubyJ} Flex Q PHP 





Dedicated to the code-heavy 
side of modern online design 




Build a URL shortener 
with Ruby and Sinatra 

Add impact to your brand by adding custom 
shortened URLs Page 88 

Access Facebook data 
with the Graph API 

Set up a Facebook app, authenticate users and 
integrate photos, feeds and information from 
Facebook into a website Page 92 

■Pkft 





A crash course 


Discover how to collaborate with web developers on the 
latest techniques and projects via GitHub. Plus, take command 
of version control with Git Pa ge 82 


contents _ 












A CRASH COURSE IN GIT 



Chances are, if you’ve been browsing 
the latest JavaScript libraries or CSS 
frameworks, or even just checking 
out demos of cool techniques 
created by other developers, you’ll 
have seen a link to a page on GitHub 






I ncreasingly, if you want to collaborate with 
other web developers on any kind of project, 
GitHub is where you'll go. 

GitHub, at its core, is an online host of Git 
repositories. What's Git, you ask? Git is a 
revision control system (also called a source 
code management, or version control 
system), if youve ever found yourself 
working on a site and had a number of folders, each 
named mysiteversionl mysite_version2, and soon, 
you've inadvertently created your own revision 
control system, albeit a very inefficient one. 

Using Git (or any other revision control system) 
allows you a far greater degree of control over those 
revisions, and it also greatly facilitates collaboration 
between different developers (often in different 
locations) working on the same project. 

Let's look at a few situations where revision 
control comes in really handy. Let's say you have a 
website, and you want to experiment with a different 
layout. Because this will involve rewriting big chunks 
of your CSS, you r d normally have a few options: 
create an entirely separate copy of the website in a 



Getting started 

Before we can grab a project on GitHub and start 
contributing to it, we'll need to learn a bit about how Git 
works independently of GitHub. 

First things first that means installing Git. Head over 
to qit-scm.com/downloads and follow the instructions 
for your platform otf choice. 

For all the examples in this article, we’ll be working 
with Git from the command line. On Linux and Mac. 
this will be your built-in terminal application. On 
W'ndows.use the Git Bash application provided by the 
Git installer 

Configuring Git 

Before we start, we have a few quick configuration 
steps to go through, Git not only stores a record of the 
changes made to a project, but a record of who made 
those changes. For this to work properly, we first need 
to tel; Git who we are. 

Open up your terminal (or the Git Bash program if 
you happen to be using W.ndows), and run the 


separate folder, or perhaps just comment out all your 
existing layout CSS temporarily. 

Both of these approaches have significant 
drawbacks: in the first case, you might wind up making 
changes to other aspects of the CSS (say, fonts or 
colours) in tine primary (live) version of your site, which 
you'd lose if you simply copied your alternate layout 
CSS over the top of it when you were done. In the 
second case, you'd actually be unable to make changes 
to your current layout until you were done with the new 
one, since they both live in the same file. 

It only gets worse if you're working on a team: 
another developer may have made changes to the 
main CSS file, unbeknown to you. which you'd then 
accidentally squash when you copy in your updated 
version of the file. Messy. 

Revision control solves these issues and makes it 
easy to combine different changes made to the same 
files (even when those changes are made in parallel by 
multiple developers), experiment with alternate versions 
of your code while retaining the ability to switch back to 
the primary version painlessly, and keep a complete log 
of all the changes you’ve made. 


following two commands, using your own name and 
ernait address: 

001 git config --global user.name “Louis 
Simoneau” 

002 git config --global user.email "louis@ 
flippa.com” 

Wow you're ready to start using Git! 

Repositories 

A collection of files living in a directory and managed 
by Git is called a repository. Whenever you’re working 
with Git you'll be working in a repository, whether it's 
one you've created or one you've copied from GitHub. 
This could be all the code fora website, ora particular 
JavaScript library, or anything you can think of, really. 

Let's create a simple Git repository that we can use 
to learn all of Git's basic commands. 

Create an empty directory, and then navigateto it tn 
your terminal. Windows users can nght-dickon the 



directory and select the Git Bash option to open a new 
Git terminal in that directory. For these examples, we’ll 
create a directory called hello.git. 

The most basic G it com ma nd, and the one you 11 
likely find yourself using the most often, is: 

001 git status 

Thu will give you information about the status of the 
current repository. Go ahead and try it out in the new 
hello gil director/; type git status and hit Enter. 

001 £ git status 

002 fatal: Not a git repository (or any of the 
parent directories) 

Whoops! Gu r new directory isn't a Git repository (yet), 
so Git is complaining mat it can't tel us the status. 

Fortunately, turning our newly-created directory into 
a Git repository couldn't be easier. Simply type git init 
and press Enter 


feature_83 





A CRASH COURSE IN GIT 


0©1 $ git init 

002 Initialized empty Git repository in c :/ 
Users/Louis/hello_gi tf.gitf 

If you're using the Git Bash terminal on Windows, you'll 
now see the word master in parentheses at the end of 
your command prompt This refers to the current 
branch your repository is on. but don't worry about 
that for now. We are going to discuss branches in more 
detail later on. 

Now that your directory is a Git repository, try 
running git status again, and this time you’ll be 
rewarded with a bit more information: 

001 £ git status 
002 # On branch master 
003 # 

004 if Initial commit 
005 X 

006 nothing to commit (create/copy files and 
use "git add” to track) 

The key bit there is nothing to commit. This is Git's way 
of telling us that there's nothing new in the directory 
for it to track (in fact, there's nothing at all in the 
directory, but the message would be the same if 
nothing had changed). 


a file in your editor of choice and save it inside the 
hello_git directory. 

Lets say we created a file called hello.txt with the 
contents Hello, Git!. Now. when we run git status again, 
it notices our new file and lists it in a section called 
Untracked files; 

001 S git status 
002 # On branch master 
003 # 

004 # Initial commit 
005 fl 

006 fl Untracked files: 

007 # (use “git add <file>..." to include in 
what will be committed) 

008 # 

009 # hello.txt 

010 nothing added to commit but untracked 

files present (use "git add" to track) 

On the last line of code above. Git is informing us that 
there's nothing to commit, even though we've added 
a new file. This is because Git won't track every file in 
the directory by default; it is up to us to tell it which 
files to track. As the output above states, we are going 
to need to use the git add command to tell Git to track 
our file. 





Commits 

The basic unit of change that Git deals with is a commit. 
Your basic workflow when working with Git will involve 
making changes to one or more files, then committing 
those changes to Git. This creates a new commit, with a 
unique identifier that allows you to access it later on (for 
example, to return your repository to the state it was in 
at that commit). 

Lets create the first commit for our helio_git 
repository. Create a file in the directory with some text 
in. If you're familiar with command-line editors like Vim 
or nano you can use those, but otherwise simply create 




i" MNGW32z/£/Usei^uh/hdk>_git 


(urt 'flit help flit' tp display the help index* 

tun 'git help <connand>* to display help for specific connands. 

.oui^PhOLIl S PC ^O’tloerc/Lcuj.is^hello^siit 

i flit status 

fatal* Nat a sit rappsitary <or any pF thp parent directories}; *fli 

j i.i! n i ■. n LOU J S PC /Mliew/Lfluii/hg 1 la fit 

i u it in it 

initialized empty Git repository in t:^lfsers^Lotiis/hello_git/'.gity 

LouisELCKl 1&-PC /C^Users^Lo«isv ,, hellii_git <nvaster> 

$ Bit status 

ft bn branch piaster 

It Initial connit 

nthinfl to commit fcrsato/'copy f iles and use "flit add" to track) 

iuuI^ELCNJH PC /C/Vs«Pfi/tiOuis/h«lh_ 9 it €irtastar> 


Using git init to initialiser repository and git status to clujCk its status 


Creating a commit involves two steps: first, stage the 
files you want to commit to the staging area, and 
second. commit them. 

To stage files for a commit, go ahead and use the git 
add command: 

001 git add hello.txt 

This produces no output but you can simply run git 
status again to verify that it worked. Now you'll see the 
hello.txt file in the changes to be committed section. 

Now that the file is staged, we want to commit them. 
Each commit In Git is accompanied by a message 
explaining what changes 4 contains. To add the 
message, include it in quotes after the -m flag, like so : 

001 git commit "initial commit, added the 
hello.txt file" 

This produces the following output; 

001 $ git commit -m “initial commit, added the 
hello.txt file" 

002 [master (root-commit} 4f73b9S] initial 
commit,, added the hello.txt file 
003 1 files changed, 1 insertions^), 0 
deletions(-) 

004 create mode 103644 hello.txt 

Git provides a brief description of all the changes that 
are contained in this new commit, like how many files 
were changed, and how many lines of code were 
inserted and deleted. 

At any time in a Git repository, you can see a history 
of all the commits leading up to your current state by 
running the git log command. At the moment, our 
repository only has one commit, so running git log only 
shows us that commit: 

001 S git log 

002 commit 4f73b9S9922b0ec6e52a209b95cbd99c9f 
2885Se 

003 Author: Louis Simoneau <louis^!flippa-com> 
004 Date: Sat Jul 14 13:57:02 2012 +1000 

005 initial commit, added the hello.txt file 

Git uses long alphanumeric strings to uniquely identify 
each commit, ours is 

4f73b969922b0ec6e52S209b95cbd99c9f2BS58e 
(The hash will be different on your machine.) You can 
see a shortened version of this string (containing only 
the first few characters) in the output from the git 
commit command. 

You can use the gif show command to display all the 
changes made in a given commit by providing its 
identifier (the short version works fine here too): 

001 S git show 4f73b989922b'0ec6e52S209b95dbd99 
c9f28858e 


84 


feature 
























002 commit 4f73b989922b0ec6e528209b95cbd99c9f 
?&858e 

003 Author: Louis Simoneau <louis@flippa,cotin> 
004 Date: Sat Jul 14 13:57:02 2012 +1000 

005 

006 initial commit, added the hello.txt 
file 

007 

003 diff —git a/hello.txt b/hello.txt 

009 new file mode 100644 

010 index 0000000 ..670a245 

011 — /dev/null 

012 +++ b/hello, txt 

013 m -0 r 0 +1 @@ 

014 +Hello ? Git! 

Lines preceded with a plus symbol (+) were added in 
this commit Lines preceded by a minus 0 were deleted 
(our example commit only has one line added, and 
none removed), if you make changes to a line. Git will 
show you the old version of the line as deleted and the 
new version as added, so you can easily compare both 
versions to see the changes. 

That's all there is to committing changes to a Git 
repository; we edit some files, add them to the staging 
area with git add filename*, then commit them with git 
commit -m "commit message* - . 

Then, at any time, you can review the history of your 
changes with git log. or review the changes made in a 
specific commit with git show ^commit*. 

Branching and merging 

So far weVe only seen the simplest features of Git 
adding files to a repository and committing changes. If 
that's all Git was capable of, it probably wouldn't be 
worth using. Now it's time to look at Gifs real killer 
features: branching and merging. 

Git branches allow you to have several versions of 
your project side-by-side. For example, if you’re working 
on an experimental feature, you can do all that work on 
a branch. If you discover a bug in your application that 
needs fixing urgently you can simply save your work 
on the experimental branch by committing it, switch 
back to the main branch, commit your fixes there, and 
deploy the fixed code. When you switch back to your 
experimental branch, all your work will still be there. 

When you're done working on your new feature, you 
merge that branch back into the main branch. Git will 
automatically combine the changes made on each 
branch for you. If there are conflicts - if, for example, 
you made different changes to the same line of the 
same file in both branches - you can pick which change 
you want to keep. 

As we noticed earlier, our Git repository is currently 
on the master branch: this is the default primary branch 
for any repository To switch between branches, you 
use the git checkout command, followed by the name 
of the branch you want to check out. 

Let's create a new branch in the hello_git repository. 
To do this, we pass the -b flag to git checkout: 



jpdategh pogcs 


GitHuCs desktop applications provide a nice visual Interface for working wltn branches 


001 $ git checkout -b test_branch 

002 Switched to a new branch test.branch 1 


The new branch will inherit all the commits of the 
branch you're on up to this point. Think of it like a real 
branch on a tree, where the bottom of the trunk is 
the first commit. The new branch will have ail the 
history down to the bottom of the tree, but any new 
commits on the master branch (known as the trunk) 
won't be visible on the branch, and vice versa. So if you 
type git log at this point you'll still be able to see your 
initial commit. 

To verify that you're on the new branch, you can 
either type git status again, or use the git branch 
command, git branch will give you a list of all the 
branches of your repository: 

001 $ git branch 
002 master 
003 * test_branch 


001 S git add goodbye.txt 

002 S git ccrnmit - m “add goodbye message'' 

003 [test.branch lel2B5e] add goodbye message 
004 1 files changed, 1 insertions(+)., 0 
deletions(-) 

005 create mode 100644 goodbye.txt 




current branch 

_ n x 


branches 


'*Jg AlttS+rai 

| | MuflfiamliflflJMn 

Pi P»utjfi*h 

► 


customer 

dew 

gh pages 

iiiM'c II ti-HUMilWilliStyh'- 1 . 




Ryan l4ddM 


a +■ v 


ModPniifrfCHMnh 


m 


u mi 


M*fg» pull r#qu««t iili Item 

■MI«lKnom«unw 


. » L cr 




Jul 1J. / 

n uivpi 


(It 5 IE 

ArjHLlfra 


S i 


Now let's make some changes on our new branch. 
Create a new file, called goodbye.txt. with a line of text 
in it and commit it 


Verify that your new commit is there using git log, then 
switch back to master by typing: 

001 git checkout master 


feature 


.85 



























A CRASH COURSE IN GIT 





k nwHttw ■ Fit** LXummif.i 

Unmcftfci i 

fMp DamVcHH}* 

0 Mrrnt * RMftW BTOSt 

Aid ttuWby* nwtugv 

(L LBtH umi j 0.1. 3J5 


0 if 

hello_git 1 



|ibk*T 

B ipni<dbvn* LhI <tli^ jqu 

■"U gymfcvw rm«.nng* ft*w» 


W italn W 2 days ago 

n4kH cbt»tH added iho hoHoM Ik |Ldeh3 5*trwwju| 






After p ustiirig our changes* thevH be vlsl ble on GitHub 


At this ooini. if vou insert the directory, you'll note that 
goodbye.txt is nowhere to be found. That's normal; it's 
tucked away on the test_branch branch. If you want, 
you can switch back and forth from master to test, 
branch to see the file appear and disappear. The same 
thing would be happening to the contents of your files 
if you had changes to them on a branch. When you 
check out a branch, the files on disk will be changed to 
match the latest commit on that branch. 

Let's say that we're satisfied with the new feature on 
test_branch, and we want to incorporate it into the 
project. We want to merge the test .branch branch into 
the master branch. 

Make sure you have master checked out. then type: 
001 git merge testjaranch 

Now all your changes to test_branch will be brought 
over into master. You can verify that ftiis is the case with 
git log; 

001 $ git log 

00 2 commit 1e1285eS96491b77579S7f m 1682a176 L3d 
5f74d 

003 Author: Louis Simoneau <louis@flippa.com> 
004 Date: Sun Jul 15 11:46:52 2012 +1000 
005 add goodbye message 

006 

007 commit 4f73b983922b0ec$e52s?09b95cW99c9f 
28858e 

008 Author; Louis Simoneau <louis@flippa.com> 
009 Date: Sat Jul 14 13:57:02 2012 +1000 
010 

011 initial commit, added the hello.txt 
file 

012 

013 Remember; when merging, you should start 
from the branch you want to merge the changes 
into. 

GitHub 

Okay, now that we have learned how to commit and 
review changes* and switch and merge branches, we're 
finally ready to start sharing our code with the world, 
using GitHub. 

We'll first learn how to upload our new repository to 
GitHub and keep it up to date with our changes, and 
then we'll have a quick look at contributing to some of 
the existing projects, 

Head over to githiib.com and sign up for a new 
account if you don't already have one (GitHub is free for 
open-source projects, you only need a paid account if 
you want to keep some of your repositories private). 
Then locate the link to add a new repository (it’s a little 
icon next to your username In the top-right, with a book 
and a plus icon] and click iL Enter in the name for your 
repository (in our case. he!io_git). and submit the form. 

As soon as you've created your repository* GitHub 
helpfully provides a page of instructions for setting up a 
new repository or uploading an existing one. Jump to 


the section titled Existing Git Repo? and follow those 
instructions. After entering the directory where your 
existing repo lives* there are two more steps: git remote 
add and git push -u: 

001 git remote add origin git^github. 
com:rssaddict/hello_git,git 
002 git push -u origin master 

In Git terminology, a remote is a version of your 
repository that's stored elsewhere. This could be on a 
co-worker's machine, on a local server, or somewhere 
on the Internet, in this case, it will be hosted by GitHub. 

The first command, git remote add. is telling Git that 
our repository has a remote* called origin, that lives at 
the provided address (this will be different for your 
project since it contains your GitHub username.) 

The next command, git push, is telling Git to take the 
local commit history on the master branch, and send it 
to the master branch of the remote named origin 
(which is GitHub.) The -u option is only required the first 
time you push your changes to GitHub. 

When you run the git push command, Git will ask 
you for your GitHub username and password. Type 
them in. and your code will be pushed to GitHub. You 
can see it published on the site by refreshing your 
repository page. 

Contributing to an existing project 

Now that you know now to upload your own projects to 
GitHub. it's time to learn how to contribute to other 
people's projects. After all* that's exactly what open 
source is all about! 

Of course* you can't push directly to a project you 
don't own - that would be chaos, However* GitHub 
introduced the concept of forking - making a copy of a 
GitHub repository inside your own account 

To fork a project, just navigate to that project's page 
on GitHub and click the fork button in the top-right 
corner. As an example, let's try forking Modernize Go to 
glthub.com/modernizer/mQdernlzer and dick Fork. 
After a few seconds, you'll land on your own copy of the 
Modernizr repository. 

Now you need to download a copy of the repo to 
your computer bo you can work on iL Copy the URL 
from the box at the top of the page (it will look 


something like nttosJ/github.eom/rssaddict/Modemizr, 
git) . Open your home directory in the terminal* and 
issue the git clone command, passing in the GitHub 
URL you just copied: 

001 git clone https://github.com/rssaddict/ 
Modernizr*git 

This will copy the entire repository to a directory with 
the same name on your machine. You can now make 
changes, commit them, and push them back up to 
GitHub however you like. 

If you make changes that you think would be 
valuable for all users of the project, or fix a bug* you can 
submit a pull request, which invites the owners of the 
repository you forked to incorporate your changes. 
There's a pull request button conveniently located at 
the top of the page when you're viewing any of your 
forked repositories. 

Conclusion 

Now that youve mastered the basics of Gil and GitHub. 
you'll be in a far better position to contribute to 
open-source web projects. Not only can you share your 
own work with others, you'll also be able to help out the 
community by fixing bugs and improving on the work 
of those whoVe come before. 

Extra reading 

This arLide has only skimmed the surface of what's 
possible with GiL and if you want to start using it as part 
of your workflow you'll have a bit more learning to do. 

Here are some of the best places to polish up on 
your Git skills; 

git help: type git help In your terminal to get a list of 
available commands, and git help ^command* to get a 
derailed description of the command and all the 
available options. 

The Git Book: the Git website has an entire book about 
Git, available completely for free online. This is a 
fantastic resource that goes into a lot more detail about 
GiL. qit-scm.com/book. 

Git Immersion; Git Immersion is a fantastic online 
tutorial that walks you through a series of short 
exercises to learn all of Gifs features, from the most 
basic to the more advanced, aitimmersion.com- 


86 


feature 












what does unlimited space look like? 


lnnnisErv...bEyond thE clouds 











infiniserv 






limitless imagination 



We’re offering a new take on virtualisation. You think it, we provide it. 

Infiniserv’s virtualisation and cloud computing offering provides a fast and totally 
flexible solution for your organisation. And it’s fully supported byC4L*s ultra-fast 
private network and support that's second to none. 


www.inljni5grv.com 







< tutorials 


| Build a URL shortener with Ruby and Sinatra 


Build a URL 
shortener 
with Ruby 
and Sinatra 

Make an impact with your brand and 
start sharing shortened URLs 
generated using your own application 

tools I tecli I tniiuis Code editor command'!ine interface 
expert Matt Gifford 



A s we make our daily dive into the 
world of social media, we see 
shortened URLs at every turn. 
Not only do they provide ljs with 
a quick and easy way to share 
potentially long URLs that are 
prone to being misspelled, they 
can also provide marketing 
benefits if the domain is brand-specific 

in this tutorial we will build our very own URL shortening 
service. The application itself will toe built using Ruby and 
Sinatra - a small yet powerful addition to the programming 
language. Sinatra is a Domain Specific Language CDSU that 
helps us create our application in a RESTful manner by 
defining certain HTTP actions, and then building the 
application to cater for these requests and how it will 
respond to them. Unlike other frameworks such as Rails, 
Sinatra has no concept of separate models, views or 
controllers. Nor doss it have any helper functions to help 
you create forms, links or database connections, Wfrat it 
does offer you, however, is. a simple way to create some 
truly powerful applications. 


01 Install Ruby 

" - The Installation procedure for Ruby is fairly straightforward. Windows 
users benefit from Railsinstalier ( railsin5taller.org) . which will install everything 
with ease thanks to the package. We recommend the Ruby Version Manager 
(RVM) application, available from rvm.io, which allows us to install and switch 
between multiple versions of the language. 



0 2 Install Sinatra 

To ensure we can run Sinatra applications, we need to Install the 
required gems. Open the Terminal window and enter the following code to 
install the Sinatra gem. To assist us during the initial phases of building the 
application we'll also need to install the gem for shotgun, which is a reloading 
development server: 

061 > gen install sinatra 
002 > gen install shotgun 

03 Sinatra template 

Although Sinatra can run an application from a single file, larger 
projects may require specific directory structures. To help us get started, 


download the core template for the project from q Ith ub coim/coldfu mon keh/ 
URL-Shortener-Template or done It using git In the command line. This 
template project has everything we need to build our application. 

001 > git clone git://github.oom/coldfurnonkeh/URL-Shortener- 
Teinplate.git urlshortener 

A First run 

Once weVe downloaded the template project files into your desired 
location, well run the application. We first need to run the bundle command 
to install any required gems that our app needs. Once this has completed, 
we'll run the application using the built-in WEBrick server on port 4567. 

001 > cd urlshortener 
002 > bundle install 
003 > ruby application, rb 

05 Missing route 

Sinatra was kind enough to let us know that we had not added any 
routes for the application, and even gave us a simple example to fix the error. 
Let's add that example route now, as well as a second route, to create another 
page within the application. Restart the WEBrick server to see the results. 

001 get V do 
002 r, Hello World" 

003 end 
004 

005 get J /hello' do 

006 "Vlho shall we say hello to? JF 

007 end 

Using shotgun 

As we saw in the previous step, wo had to restart the server to pick up 
the updated code. This is where we can use shotgun instead, which reloads 



88 


tutnclaib 














rJUietL 

tdeveloper; 

Build a URL shortener with Ruby and Sinatra 





Sinatra ™ 


DOCUMENTATION 

CONTRIBUTE 

CODE 

CREW 

ABOUT 


1)7 0.0 1 9)0)./Mall 

0 © 117.00.1 


Put this in ™* ,i ™ 

'/hi' do 


rfrl • M Ml 


^Oorkwi^tnmi tnpTetf* 

• Sinatra docu mentation, deta II & and fork-a ble code ca n be fou nd at 

www.slnatrartp.com 


Sinatra doesn't know thin ditty 

t 


Sinatra reporlsmissinq route errors clearly with esta moles or how lofix them 


* Running ttie shotgun development server from ttie command-line Is quick 
and easy 


Thu U RL para mate r has been di splayed d i-ectly into the browser 


Wri¬ 


the code with every request to allow for continuous development. To run 
shotgun, simply run the application from the command line below, which will 
open on port 9393. 

001 > shotgun application.rb 

Sending parameters 

Lets create a third sample route within our application file, so we can 
see how we can pass variables into the URL. thereby creating more of a 
RESTfus approach. This route will accept a parameter in the URL and display it 
directly in the browser. Browse to http://12ZQj0.1:9393/Matt to see. 

001 get J /hello/:name J do 
002 J Hello, 1 + params[:name] 

003 end 


route for the home page in our application. This route checks for the existence 
of a URL parameter called url. If it exists* it will send it through to a new 
method to shrink it. 


001 # root page 
002 get r / r do 
003 

004 if paranis[:url] and not parafis[:url] .empty? 
005 generate_short_url (pa rams [: url]) 

006 else 

007 @urls = ShortURL.all; 

008 erb rindex 

009 end 

010 

011 end 



Build model 


Our URL shortening service application will use an SQLite3 database to 
store the saved URLs. To manage the control and validation of the values we 
will create a model to represent one entity from the database. Create "shorturl. 
rb' in the lib folder and add the following code to complete the model. 


001 class ShortURL 

002 include DataMapper;:Resource 

003 property :short_url, String, key; true, unique-index: true, 
required: true 

004 property :url, Text, required: true 

005 property :created_at f Date!Line 

006 property :updated_at r DateTime 

007 end 


09 Root page 

With our initial data model complete, let's revise the mutes for our 
application. Delete the example routes we added earlier, and add the new 


10 Allow posts 


We want users to be able to shorten a URL not only by sending a 
parameter via the URL and a GET request, trot also by a form POST 
submission. Let's add the revised route below the first, if no submission is 
made, we will display an index file to show the form and current number of 
URLs we have shortened. 


001 post 7 F do 
002 

003 if params[:url] and not paramsL:url].empty? 
004 gene rate_short_u rl(pa rams[:url]) 

005 end 
006 

007 @urls = ShortURL.all; 

008 erb ; index 

009 


010 end 


tutorials 


09 































< hi to rials > 


| Build a URL shortener with Ruby and Sinatra 


Helper methods 

To generate our shortened URL we will use helper methods. Add the 
following function to the helpers code block. This accepts the long URL 
provided by the user, generates the random stnng, saves the information to 
the database using the model and builds the new short URL. which we can 
use for display purposes later. The code for this step is on the coverdisc. 

j " h *4<■ i; ‘ h*it> Lut**’** r bvtn O Cmm ■ 


mLUv > I liir t 
mitt* ttl«n • F*t» 

wrl irHMLM 

Ni-IK *06*1* fa 

itUm J#l5 4J ItTiSiJI [id-ti M Jtl 2 Vf 1im , ft : t».*1.«* 

fit I- ntm;// Mhao. co .uk HU-V^lirU:B:iMl:fl BUHff'UTU:&tlMl« 

*(!■* , nMwi^ i »i; ■J-tlTU;A[tt«ill JV1J-V-llTUirW 

MUlfr 


Random string 

Our random string for the shortened URL is created by another helper 
method. Add this below the previous entry. This will generate a random string 
value limited to the total length of characters we send through, which in this 
application defaults to five. 

001 def rando*i_s thing (length) 

002 rand(36**length),to_s{36) 

003 end 

Build URL 

Finally, well add our last helper method, which completes the 
functionality to create the short URL, This method will build the revised URL 
link, creating a string that concatenates the site URL from the configuration 
object and the generated random string. Add this below the other helper 
methods in application.^. 

001 def get_site_url(short_url) 

002 SiteConfig.url.base + shortjjrl 

003 end 

Track clicks 

it may be useful to track or record how many times a shortened link, 
has been followed. Create a new model called didttracltrb in the lib directory 
and add the following code, which will validatethe properties for the object 
and help to manage database transactions for us. 

001 class CliCkTrack 

002 include DataMapper: Resource 

003 property :id r Serial, key: true, unique_index: true, 
required: true 

004 property :short_url. String, required: true 

005 property :url, Text, required: true 

006 property :tlicked_at, DateTime 

007 end 


the content type for the response and set the values of the object from our 
model, which has retrieved the data from the database using a getQ method. 



Debug params 

As we have the Terminal or command-Sine interface open during 
I development, we can use this to help us debug and test our application, Add 
the following to the application file. This will output any parameters sent to our 
application in the Terminal window as they are submitted, which is very useful 
for testing expected parameters. The code for this step is on the coverdisc. 

Create form 

Open views/index.erb from the project files. We'll add the form to allow 
users to submit URLs here. We can display the application title, already set in 
the configuration object, as well as the current count of generated URLs. The 
hO method escapes any unwanted HTML from the URL parameter. 

001 <div class-'container^ 

002 

003 <hl><%= SiteConfig.title %X/hl> 

004 <p>Currently serving <%= @urls.count %> shortened 
links</p> 

005 <fonm methods"post"> 

006 <input type-'text" value-'<S p htparans[:url]) %>" 
naiBe=”url" id- J 'url J ' /> 

007 <input type= JI submit'' valuer's hoc ten” id=”sub(iiit" /> 

00S </form> 

009 <div classF"clear jr ></div> 

010 </div> 

View results 

Below tie form ir views/ ndex.ero. let s row add the code to display 
the freshly-created short URL after a successful request. Using a simple if 
statement to check for the existence of the variable, we can set the generated 
value as both the display text and the href attribute for the anchor tag, 

001 <%, If @shortenedURL %> 

002 <div cl ass- 1 'result J '> 

003 Your shortened URL is: 

004 <a href= J, <^ GshortenedLRL %> ,f x%= GshortenedLRL £X/a> 

005 </div> 

006 <% end %> 









View URL 


Create a new route in the application file to allow users to follow a 
generated link. This route allows for two entry points, both with the shortened 
URL in the path. If a matching short URL exists in the database, we’ll log the 
visit in the database using the dick track model before we redirect the user to 
the original long URL. The code for this step is on the coverdisc. 


ftk Expand info 

Create a new route that will allow us to expand a shortened URL via an AP$ 
request to return information about the link as a J5GN object. In this route we set 


20 Create test page 


Create a new file called application_spec.rb in the spec directory. This will 
hold our unit tests for the application, which will help us debug and ensure our 
code works as expected- Add the following code into the test file to set up the 
dependencies and testing processes. Notice that we require the actual 
application file to run the code. 


001 require^relative J ../application.rb' 
002 require ‘rack/test' 


90 


tutorials 

















r.web- 

ideveloper; 

Build a URL shortener with Ruby and Sinatra 


m3 

004 set environment, rtest 
005 

006 def app 

00 7 Sina tra;: Application 

008 end 

009 

010 describe 'URL Shortening Service 1 do 
011 

012 include Rack: :J est:rMethods 
013 

014 end 


21 Define tests 


Mow wo need to add some tests into the document. Place 
these tests after the Rack include in the tag block. The description of 
each test is cleat informative and written in plain English, which makes 
it ideal for anyone to read and understand what should be happening 
as it runs. 


001 it ‘'should load the home page' 1 do 
002 get '/' 

003 last.response,should be.ok 

004 end 

005 

006 it "'should pass when a short url is viewed directly"' do 
007 get Vjirey' 

008 last^response,should be.ok 

009 end 

010 

011 it "should fail when trying to expand a hash that hasnt 

been sent 1 ' do 

012 get '/expand/" 

013 last.response.should.not be.ok 
014 end 


Mk Running tests 

With our test cases written, we can now run the entire test 
script against our application to make sure everything is up and 
working as it should be. Open the Terminal window and type in the 
code below to run the rspec tests. The output and results will be visible 
in the Terminal. 


001 > rspec spec/applicafion.spec.rb 



Code library 

In detail 


Let's take a closer look at some of the code functions used in this application 


Weusethefirst.or. 
create method on the 
entity only to save the 
record if it doesn't 
already exist 


The site configuration Is 
set in environmentub. 
You can edit or change 
the config object 
proper ties here 


The Gemfile contains a 
list of all gems required 
by the application. 
Runnlngbundle install 
will manage these for us 


001 def gener^te_short_url(long_url) 

002 

003 ©shortcode = random.string 5 
004 

005 su = 3hortURL,first_or_createC 
006 { :url longjurl 

007 { 

008 ;short.url => ^shortcode, 

009 ;created_at => Time,now, 

010 :updated_at => Time.now 

011 }) 

©12 

©13 @shortenedURL = get_site_url(su.short.url) 
©14 

©15 end 

©16 configure do 
©17 

©18 SiteConfig = Gpen5truct.new{ 

©19 : title => 'Sinatra Shortener 1 , 

020 :author => 'Your Name Can Go 

Here', 

©21 :url_base => http:// 

localhost:4567/' # the url of your 

application 
©22 ) 

©23 

©24 # load models 

©25 SLQAD.PATH * un s hift ( 1J #{F ile.di r name (_ 

FILE_)}/lib' 1 ’) 

©26 Dir . glob( " # {F ile * d i rname(_FILE_>}/ 

lib/*,rb”) { 1lib| require File. 
basename(lib, \* J > } 

©27 

©28 DataMapper::setup{:default , 

" sql i te3: / /#{Dl r. pwd}/ shortu rls. db 1H ) 


©29 



©30 

end 


©31 



©32 

source f " htt p: // rubygems. org 1 

©33 

gem 

1 sinatra", '>= 1*2* 

©34 

gem 

1 rake 1 

©35 

gem 

1 datajTHpper J , '>= 1.1" 

©36 

gem 

1 dm-core ’ 

©37 

gem 

1 dm-sqlite-adapter 1 

038 

gem 

‘dm-timestamps 1 

039 

gem 

‘dm-validations r 

040 

gem 

J dm-aggregates J 

©41 

gem 

'dm-migrations J 

042 

gem 

haml 1 

©43 



©44 

group ;test do 

©45 

gem 

'rspec' r -require => 

©46 

gem 

'rack-test' 

©47 

end 



tutorials 


91 





















< tutorials 


| An introduction t o the F acebook Graph API 


An 

introduction 
to the 
Facebook 
Graph API 

A powerful API that allows you to 
access the data behind Facebook 

toolasllcc:lilirtMicbt Dreamweaver. PHP. MySQL expert Pete Simmons 



I | n this tutorial well he recreating elements of 
Facebook, under the guise of 'Fakebook 1 . 

This practical demonstration will show you 
how you can access certain elements of the 
Graph API for use on your website. There is 
I no real point to recreating Facebook in Its 
entirety using the graph, as they seem to be 
doing a pretty good job of that themselves! 
This is more a convenient way to show you 
the basics, so you can pick and choose what 
you use for future projects. 

in this tutorial we will cover how to set up a Facebook 
application, how to authenticate a user on your website, 
and how to pull information from the graph to display 
on your website. 

it is worth noting that Facebook has a tendency to 
change API features on a regular basis, so it is worth 
keeping up to date with what is going on. via the 
Developer Roadmap {found at developers-facebook. 
com/roadmapj. Keep a mental note of anything that 
you may have coded for future reference, as you may 
find that your application suddenly stops working for 
no reason. It is unlikely that anything we cover in this 
tutorial will change, as the Facebook graph could be 
considered a core featu-e of the API. 


Set up your application 

Navigate to bit.ly/pquEvy and dick Create New App. In the pop-up 
box, enter a name for your application and an application namespace. The 
namespace cannot contain uppercase letters, numbers or spaces and must 
be unique. Agree to the Facebook terms and conditions and press Submit 

Your APP ID 

You will be taken to your App settings page. At the top of this page you 
will see your Application ID and Application Secret. It is important that you do 
not surface the Application Secret in any way, including via the page source 
code. Make a note of your Application ID. you will need this later. 

Application settings 

On your application settings page, there are a couple of fields that you 
need to fill out with server information - the first is App Domain. Enter the 
domain of your website without the HTTP or WWW; this will authorise all 
subdomains and directories on your server. .Scroll down and elicit the Website 
box and fill in your server details here as well. 

Authenticating a user 

Now we have our application set up, we need to create a way of 
obtaining an access token from Facebook, the Access Token is the key that 
unlocks all sensitive data about a user We'H need to redirect our user to a 
Facebook authentication page and then push them back to our application. 
Copy the code from the disc into a new PHP document. 

Adding app variables 

You'll notice on lines three and four that our code requires our unique 
APP ID and APP Secret. Add these details in from step 2, as well as the domain 
on line five and save your PHP page at i ndex .oh p. Running this page now will 
redirect you to a Facebook authentication page and ask for permissions. Don't 
accept these permissions yet! 


Extended permissions 

The code we used in step 4 is taken from the Facebook 
documentation and only provides us with basic access information. If you had 
allowed access in the previous step, you would now need to delete the 
application from your Facebook and re-add iLToget access to more in-depth 
data, change the Sdiatog.url variable Cline 12? to the following. 

001 $dialog_url = "https://www, facebook, codi/dialqg/oauth?cliefit^ 
id- f . $app_id , '^sccpe-u ser_about_me r use r_act iv i t i es > use r_ 
bi rthday, user_checki ns f user .groups, u ser_inte rests, use r = 

1 ikes , use r_p>hotos h user_status , emai 1 f userJhrtWtGwi&redirect_u r i-'* . 
urlencode($my_url) . Jl listate= J \&_SESSION['state' ]; 

Testing our permissions 

Run your code and dick Go to App when prompted, you should be 
redirected back to the domain you entered on line 5 of your code, you should 
also see a welcome message with your name. You will also have stored an 
access_token in the SparamsE'accessJoken'j variable. Delete the echo 
command outputting your name and add the following code to see available 
user data. 

001 print_r($user); 

Styling our data 

Open the CSS file from the disc and save it to the same folder as your 
project, add the foltowing code above our PHP code. This will allow us to 
quickly style our information and give you a storting point for the layout of 
your project. You'll need to move the session_start to the top of the page. 

001 <? Sessions tart Q; ?> 

002 dDQCTYPE htinl> 

003 <head> 









92 


tutorials 











rJUietL 

tdeveloper; 

An introduction to the Facebook Graph API 



004 <title>Facebook Graph AFI</tiUe> 

005 clink href="style.css"' type="text/css 
006 <,/head> 

007 

Displaying basic information 

Now we have everything set lid. it's tine to duI some data aid display 
I it The following code will pull in a user's profile picture, print a welcome 
I message, and then construct a sentence based on their Facebook data. 
Replace your pnnt.r line with the code for this step, which is on the coverdisc. 

Getting users likes 

Now wc'l connect to a different part ot tic Facebook grapi aid co lect 
a list of pages that the user is a fan of. Weil be limiting this list to ten for speed 
reasons, but you can display as many as you like. Add the following code 
underneath our info div. 

001 <div styIe= l 'clear;both‘ , "></div> 

002 <div class-'ll kes Jf x?5 $user->first_name ?> likes</ 

dlv> 

003 <ul> 

004 <? 

005 Hikes = json_decode(f Lle_get_contents( ,J https: //graph, 

facebook. com/me/I i kes ?1i mi t=10&access_token=”.tpa rams[ ' acces s_ 
token']}); 

006 foreach (Slilces->dota as lvalue) { 

00 7 echo 1 <1i> J ,$value->name. 1 </li> 1 ; 

008 > 

009 ?> 

010 </ul> 

Making pages clickable 

We can go one step further with our list of fan pages, by making them 
clickable. To do this we need to know the URL of each page; this information is 
not included in the graph data, but the page SD is. We can simply go to 


facebook.com/fpage_id] and get to where we need to be. Alter your echo 
code to: 

001 echo '<liXa href-'http;//facebook r com/ f r $value->id r 
target- r, blank r '> J . Ivalue->name. J </ax/li> f ; 


Getting interests 

Getting a user's nterests is very sinri ar to getting thei- ikes. Add LIie 
following code underneath the previous step, to show a list of clickable user 
interests. Again these will link through to a fan page based on the page ID. 

001 <div class=‘"interesfs l 'x?- $user->flrst_name ?>'s interests</ 
div> 

002 <ul> 

003 <? 

004 $like$ = json_decodeCfile_get_contents("https://graph, 

fa cebook . com/me/ i n te rests ?1 imi t= 10&ac cess_token= ,p . $pa rams [ ' access_ 
token'])}; 

005 foreach <$likes->data as Svalue) { 

006 echo '<li>'.ivalue->name.'</li>‘; 

007 } 

008 ?> 

009 </ul> 

Adding photo albums 

The next step for us to add a list of photo albums i.hal. the user has 
uploaded. Again we need to connect to a different section of the graph, and 
interpret text data and convert it to a clickable image. This image will in turn 
lead us into the photo album itself. Add this code under the last step. 

001 <div clas s= JI albums" xl= $user->f irst_name ?>'s albums</div> 
002 <? 

003 lalbums = json_decode{file_get_content5C"hftps://graph, 

f a cebook,com/me/albums ?1imlt-G&access Jtoken-',$params["access^ 
token'])}; 







tutorials 


93 

















































< hi to rials > 


| An introduction t o the F acebook Graph API 


p*l# Simmorn 


<Lsft> 

W 


-A more friendly liter irn5s&age, 
showing our profile picture and a 



sentence constructed using our data | 


»We're now pulling in 
a user's likes, and 
c licking tnem will 
take you to that page 


<Lelt> 

■ We now iiave the user's latest 
six photo albums. You can 
cha nge Ih Is I imit af you prefer 


<MnW> 

■ Now with addled fa ncyEox, 
Our images open in a lightbox 
overlay complete with captions 



Hetto Pot* Simmon* 


3L, 


• m m ii i i u' 

- w iarh w iu w 


• As before, we new 
have interests displayed 
in a clickable list. This is 
very similar to likes 



004 foreach ($albums->data as Svalue) { 7> 

■065 <div cla$S= "albumcove r JF > 

006 <a href= ''album r php?id=<?= $value->id ?> jr > 

007 cimg src="https://graph.facebook,go«l/<?= $value->id 

?>/pictu re? type=thumbnai1&acces5_token=<?- Spa rams [ J access_token J ] 
?>“ border- 1 ®" /> 

008 </a> 

009 <div clas£f= lf descriptio«n''><?= $value->name ?x/div> 

010 </div> 

011 <? } ?> 


The 

Authentication 
process 

A! the start of this tutorial, 
we pushed our users away 
from our application, on to 
Facebook. More information 
on this process can be 
found at bitJy/J 6 HnhG. 


Exploring albums 

Wc now need to create a new PUP page that wil display all the photos 
in a previously clicked album. Open step14a.php from the disc and save it as 
‘ album.oho' in your project folder. Under the £user variable add the following 
code, this wil pull all thumbnails from an album, and their descriptions. 

001 ?> 

002 <hixa href="'index.php‘">alt;' Back </ax/hl> 

003 <div class="'albums"x/div> 

004 <? 

005 Salbum = json_decode(file_get_contents( >, https :// 

g raph. facebook. cent/". $_GET[" id ’ 3 - J ' / photos?access_ 
token-".$pa rams [ J acces s_token J 3) ); 

006 foraach (&jlbum->data as Svalue) { ?> 

007 <div class= ''albumcover' r > 

008 <img $rc =,, <?= Svalue->picture 1>" border- 1 "0" /> 

009 <div class=" description''><?- $value->name ?x/div> 

010 </div> 

011 <? } 7 > 

012 <1 

15 Adding fancyBox 

The next step is to demonstrate how we can integrate the Facebook 
graph into a thrd-party tool, like fancyBox. Download the source files from 


fancyapps.com/fancybox and add them to the head of your FITML and into 
your project folder. Now all we need to do is wrap our thumbnails around a 
link like so. 

001 <a class-"fancybox” href= J, <7= $value->source 7>" 
rel="gallery" title=''<?- $value->name 7>”> 

002 <iing src =, "<?= $value”>picture ?> w 

border -/> 

003 </a> 

Comments and Likes 

As t stands we currently have the description of the image appearing 
twice. We'll amend our code to show the number of likes and comments 
under each thumbnail, rather than the description. We can do this through the 
following code in our description div. 

001 <d i v cl ass= w descri pt ion J ‘x?= count < Sv a 1 u e->l ikes ->da ta) 

?> Likes <br /> <?= count (Svalue- >coimients->data) ?> 
Comments</ div> 

17 Tldyuperrors 

Vou may notice that if your image has no likes or comments, your 
code will throw up some errors. This happens because the Graph does not 
include certain data if there are no likes or comments. To get around this, 



94 


tutorials 




















































r ,uieb_ 

tdeveloper; 

An introduction to the Facebook Graph API 


change the previous code to include 
some isset it conditions. 

001 <div cl ass=" descript ion J 'x? 
if ( i s s et ( $v alue->1ikes- 
>data)) { echo count($value- 
>likes->data) ; } else { echo 
'0': }?> Likes <br /> <? if 
(isset($value-comments- >data> ) { 
echo count ($value->CGmments- 
>data) ; } else £ echo J 0 J ; }?> 
CQininents</div> 

Display comments 

So we i iove our likes and 
comments text in place under our 
images, now we want to be able to dick 
them and have a fancy Box open with the 
comments, for this we’ll use a hidden 
mime div, Add tins under our albums div. 
Well need to make one more call to the 
■graph using the album ID from our 
previous foreach loop. 

001 <? 

002 Salbum.comments 

= json_decode(file.get. 
contents (" h t tps: / /g raph r foe ebook r 
com/ " r $vglue->id, "V?acces5_ 
token- 1 ", $params['access, 
token'])); 

003 if (isset($album_ 

comiients->comn»ents->data)) £ ?> 
004 <div id="inline" style=" 

display:none;width:S00px; "> 

005 <? foreach (£album_ 

comments->coiTii]ieints->data as 
$value2) ( ?> 

006 <h2>Corments</h2> 

007 <h3><?- $value2- 

>fron->name ?x/h3> 

008 <p 

class=”coititient"><?= $value2- 
>message lx/p> 

009 <? } 1> 

010 </div> 

011 <7 } ?> 

One more error 

There is one -nore emi fiat may 
have passed you by, as it’s hidden in the 
source code, if your picture does not 
have a caption, it will throw up an error. 
Update your img title tag to the following 
to get around this. Add an else statement 
in here to show No Caption if you wish. 

001 title="<? if <Isset(£value- 
>naine)) £ echo lvalue->name; } 

7>" 


Making inlines 
unique 

If you view source on your page, you will 
notice that all of our inline hidden divs 
have the same id. This is a problem if we 
want to display the contents in a 
tencyBox. as each has to be unique, in 
order Loget around this, change the div 
id=1nline" section to the following: 

001 <div id= rt irdir»e_<?= $album- 
>datg->id ?>" 
style="display:none; 
width : 500px; u > 

Clickable comment 
links 

We now need to add links to our album 
page to show the comments, we need to 
account for the fact that our fNines are 
now unique, so don't forget to pass the 
ID into your href. This can be done like 
so. and needs to be placed inside our 
first foreach loop. 

001 <div class="description"^ 

<? if (is£et($value- 

>likes->data)) { echo 

count(tvglue- >likes->data) 

; } else { echo 

"0"; }?> Likes 
<br /> 

<? if (isset($value- 
>camments->data)) { echo 
’ <a class=''fancybox" 
href="#inline. ' . $value->id, . 
count(£value->camnfients- >data), 

" Comnents</a> J ; } 

else £ echo '0 Comments ' ; }?> 

</div> 

Putting faces to 
names 

Adding the following code into our 
second foreach loop will add a user's 
profile picture to our comments box. The 
image displayed will be the Facebook 
square image, meaning we don't have to 
resize anything. If you want to, you can 
also make their name and picture 
clickable as described in Step 11 

001<div class= H profile_pic"'> 

<img src-"'https:// 
graph.facebook.com/<?= 

$valu e2->from->id ?>/ 
picture? type=squa re£acces s _ 
tok-en=<?=Sparams[ "access. 
token'];?>"' align=' J top" /> 

</div> 







Code library 

The Facebook 
authentication process 

Well take a look inside the Facebook authentication process to 
show you what is happening 


The first three lines 
define our application 
settings from Facebook, 
This ensures that the 
application Is only 
accessed from within 
the app domain. 


We then move on lo 
create a session and 
check to see If we already 
have a valid $oode set 


001 $app_id = HJ '; 

002 Sapp.secret = JMJ ; 

003 $my_url = 


004 session_start () ■ 

005 $code = $_REQUE5T["code"]; 


006 if(empty(Scode)) { 

007 ijSESSlON[ 1 state ' ] ~ 

id5(uniqid(randO, TRUE)); //CSRF 
protection 


008 $dialog_url = "https://www. 


If no valid Scode is 
found. Hie PHP will 
output a <script> 
command to redirect the 
user back to Facebook. 


facebook, com/dialog/<rauth?client, 
id=" 

009 . $app_id . J 'Sredirect_uri= JI 

urlencode(S*nry_url) . "Estate- 1 
010 . 3_SESSI0N["state"]; 


011 echQ( J "<script> top.location. 

href=" Jf , $diolog.ur 1 , '</ 

5Cript>"); 

012 } 


013 if($_SESSIQML J state 1 ] S& 

(S_ SESSION ['state"] 

$.REQUESTC'state 1 ))) £ 

014 $token_url = "https;//graph, 
facebook, com/ oau th /access .token ? ” 

015 . "client.iob" . $app_id . 

"&redirect_uri= J ' . u rlencode(3ny_url) 
016 . "&client_secret= l " . Sapp, 

secret . '"&CGde= J " . $code; 


017 Sresponse = file_get_ 

contents(Stoken. url); 

018 Sparans = null; 

019 parse.strCSresponse, 
Sparams); 


020 Sgraph.url - "https://graph, 
facebook. com/ine? 3 cee$s_tqken= J ' 

021 , Sparan^raccess.token"]; 


Once we have our valid 
Scode. thecontenls of 
the graph ar e decoded 
and a welcome message 
is displayed. 


022 Suser = j son.decode(f i1e_get_ 

contents(3graph_u rl)); 

023 echo( J 'Hello J '.$user->name); 

024 > 

025 else £ 

026 echoC'The state does not 

match. You may be a victim of 
CSRF."); 

027 } 


tutorials 


95 




















Championing the talents of 


Robby Leonardi 

web www.rleonardi.com 



Current role Digital media designer 
Education Graduate of communication design, Pratt Institute 
Expertise Photoshop. Illustrator. Flash, HTML. CSS. JavaScript. 
ActionScript 

Clients Fox. Speed TV, FX NeLworks. myNeLworkTV. and G4 
Twitter @rleonardi 


Robby Leonardi is a multidisciplinary 

designer based in New York City, He does 
graphic design, animation, illustration, and 
front-end development. Most of his work is 
online media projects such as banner ads and 
websites, and most of It is for major media 
companies. He got into web design simply 
because he loves to design and to program, 
and he feels there is some sort of excitement 
In combining things that require very different 
thought processes. Sometimes his work takes 
tons of effort, especially when the idea is a kind 
of wild; but when he succeeds In building 
something in to one complete final product., 
he believes it creates tons of joy too. 


As a designer. Leonardi is inspired by the 
competition. For him. the design world is a 
contest between the designers. Each trying to 
better the other by creating a superior design. 
He believes this is good because it will 
motivate designers to always deliver the best. 
Designers need to push the limits to wow the 
audience, and it is a major accomplishment for 
designers to create new styles that change 
design trends set new precedents - something 
Leonardi hopes to achieve. He also likens 
designers to entertainers. He thinks design 
should bring happiness to people, and that 
there is nothing more satisfying than seeing a 
smile on a clients face when viewing his work. 






SMflf VODKA. 


Joxjiews.com/Dn-air/war-storJes/index.titmJ 


FOX NEWS 


search featured topics shows 






W a ~-«*r 


P Mobile ap p 


www.BPggdtv .cQm/DrQarams/pinkS'aU-Qut 


www.5kvv.com 


01 

T his is Robby Leonard's design 
portfolio website. He utilises plenty 
of illustration as it is a love of his. 

He also uses some animation to 
give life to the pages. 


02 

Biography page with a dark 
theme to represent a night scene. 
It also applies car racing motifs to 
reinforce the petrol head nature of 
the Pmks AH Out experience. 


03 

The microsite uses mainly blue 
colour to mimic the iconic Skyy 
Vodka bottle It also projects a 
luxurious look and feel to 
represent the Skyy Vodka brand. 


04 

This show page uses mainly 
brown colour to represent a 
middle-eastern warzone. It also 
uses war elements to enhance 
the storytelling of the show. 


05 

The blue colour reinforces the Fox 
Mews colour palette. The futuristic 
look and feel is aimed to match the 
Xbox Kinect brand as an advanced 
digital device. 


96 


portfolio 
























































independent and job-hungry web designers 


portfolio 



Andre Weier 

web www.N alindes iqn.com 



Current role Freelance communication designer,, founder & 
creator of Polarfox 

Education Diploma in communication design 
Expertise Flash. Photoshop, Illustrator, Dreamweaver, 
ActionScnlpC. HTML. CSS, SEO 

Clients Abandoned Subraumstudio. The Asura, Freikkrchliche 
Gemeinde 

Twitter @Nalindeslgn 


Andre Weier graduated in 2005 after 
studying communication design for tour 
years at Ruhrakademie in Schwerte (North 
Rhine-Westphalia, Germany). Over the years 
he specialised in innovative navigation 
concepts and entertaining experiences. 

One of Andre Weier's works, freikirchliche. 
com, became In 2008 a finalist at the 
prestigious FlashForward Award for Best 
Navlgatlon/Experience with competitors such 
as MSNBC and Adobe. 

Andre Weier's work was featured in a 
number of books like Web Design: Navigation, 
The Web Designer's Idea Book, numerous 
web design Index books and has won web 
awards like the DOPE Award. DesIgnTAXI 
award and American Design Award. 

In mid-2011 Weier founded Polar fox. a multi¬ 
platform desktop app that lets you beautify, 


save and multi-post images to social networks, 
blogs and clouds Including Facebook, Fllckr 
and Twltplc (www.PolarfoxApp.com) 

The beauty of web design for Andre is the 
flexibility and possibility it offers to reach and 
get in contact with millions of people. 

The reason Andre got into web design was 
a desire to design and build beautiful 
interfaces, a hallmark of all of his work. His 
inspiration comes from his everyday life: 
everything he sees helps shape his design. He 
also loves to surf, and again, this provides 
endless streams of inspiration that are 
incorporated into his designs. 

Keeping an eye on web trends is crucial for 
Andre and it is Plnterest. where he has his own 
presence ( pintere5t.com/FQlarfoxApp) and a 
site that has been getting a lot of his attention 
is w w w.i n d ieq oqo.com 



oi jtf wMiBPlarf axapjiiCQm 



the-desk.nalindeston.cpm 


' driDs.nalindesiqnxQm 


7.ED£S^ 


01 

Polar fox is a free desk top 
application that lets you 
beautify, save and multi-post 
images to a variety of social 
networks, blogs and clouds. 


02 

Webcam, light, microphone and 
mouse action painting 
application inspired by 
legendary American artist 
JacKson Pollock. 


03 

Audiotennis is a Pong-esque 
flash game which can be played 
by making noise into a 

microphone, or by scroll iog a 

mouse wheel. 


04 

Gnjngy style Flash £ XML driven 
website for the hardcore and 
death metal band The A sura., 
who hail from the Sauerland in 
the west of Germany. 


05 

Flash-based design portfolio 
displayed on a variety of cards 
that you can flip, move and throw 
with the click, hold and shake of 
your mouse. 


97 


portfolio 





























































BifMUMffT 



Web talent showcase 



The Smart Marketing 
& Media Group LTD 

web www.smartuk.net 



Current role Web design arid marketing specialist 

Education N/A 

Expertise -u II service marketing g rou p, d igital & print 
Clients Henry Hunt. Big Green Technology, Colstoun 
House, Velvet Mule, Warners 
Twitter @TheSmartGroup U K 


The Smart Marketing & Media Group has been 
supplying Its web design service to advertising 
agencies. SMEs, global corporate, and blue 
chip companies for over ten years - in the UK 
and worldwide. With experience and a fresh 
approach to web design. Smart produces 
inspirational web-based products. They attract 
visitors and return on Investment 
It currently resides In a state-of-the-art facility 
that is the home of cutting-edge design and 
brilliant marketing concepts, all under one roof in 
the West Midlands. Whether a client of Smart is 
new to the Internet or rebuilding an existing 
website, they can be assured of intelligent 
solutions to grow their business. All of Smarts 
web design is one hundred per cent bespoke, 
and is customised to exact client requirements. 
Unlimited design revisions ensure that clients are 


completely satisfied with the process. Smart 
develops bespoke eCommerce solutions and 
content management systems, and has been 
Independently reviewed and rated as one of the 
top web design companies in the world, by the 
venerated Which Web Design Company for a 
number of years. 

As a full-service marketing group. Smart plans 
and executes targeted marketing campaigns that 
drive traffic to websites. It specialises in a wide 
range of proven marketing techniques, inducing 
SEO, RPC, email marketing and social media. 

Smart prides itself on supplying exceptional 
service and market-leading products. This has 
lead to a sharp Increase In reseller Interest Smart 
also offers other design agencies and resellers 
exemplary website design and development 
with real profit-making benefits. 



CH The Smart office 


01 

TV superstar psychic Sally Morgan's 
CMS-based website is designed and 
developed w«ha shop ladity and events 
calendar. It was built in association with her 
smash hit TV show on Sky bvmg. 


02 

Hamilton Bradshaws CMS website was 
developed by The Smart Marketing Group. 
The chairman of Hamilton Bradshaw is the 
welHknown member of the BBC's 
Den, James Caan. 


03 

TheEssensuals Hairdressing national 
website was built by Smart Essensuals 
are a sister company to Toni & Guy. and 
Smart created the fresh new lock for the 
UK hairdressing giant. 


04 

The Smart Marketing Group's 
state-of-the-art head office: in 
Shrewsbury. It is strategically 
positioned in the centre of the Country, 
dose to the M6 motorway. 


98 


portfolio 




























































NEXT ISSUE 


20 PHOTOSHOP 
TIPS AND TRICKS 

ESSENTIAL 
TIPS, TRICKS AND 
TECHNIQUES FOR 
WEB CREATIVES 




jfiwrubrd c&iltnl 
uunf HTML4 CSiS jmJ 
wMfi nir, pcnfrti ind prrtiwon 


RESPONSIVE 

PROTOTYPES: 

FOUNDATION 

Install I the responsive front-end 
framework and quickly build flexible and 
efficient layouts 


CREATE RICH 
INTERACTIVE 
CONTENT WITH 
ADOBEEDGE 

Use HTML5 C553JavaScript and 
Adobe Edge to build interactive 
content that runs on mobile devices 
and desktops 


NEWS 

PORTFOLIO 

INFORM ATI 0 

CONCEPT 

MEMBERS 

AWARDS 


PROFILE: 

BIRDMAN 

The insanely talented Tokyo design 
agency reveals w hat constitutes good 
and bad design 



FRIEND-FINDER 

WEBAPPPT2 

Grab share and update your position 
using HTML5 J s gedocation API 


Visit the WEB DESIGNER online shop at 

imagineshop.co.uk 

for back issues, books and merchandise 


ALL IN YOUR LATEST 



3 DESIGNER 


Issue 201 on sale 

Thursday 20 September 2012 


n^lnwilh 


99 
























. : ;; 

iiii. 

immu 


=iii£E5J=j 


mmm 


100 


trend map 


Lisbon 


Searching for creative advances in Portugal’s capital 


The stage is set for the 
sharing of knowledge 


9 Quodis 

www.quodisxom 

More than a decade old. Quod is happily 
works on the web out of its beautiful 
co-working space, Liberdade 229, smack in the 
middle of Lisbon. Quodls Is also a part of the 
growing web community In Lisbon, organising 
the monthly meet up Florida After Seven - an 
after-work event with a great view, where 
like-minded folk can grab a bite to eat and share a 
g lass of w I ne wh I le the city ra ces by. 


* jSBSL^ 



i 




4hQuodas 


i, Jevdopmenl. 


W' 


Welcome to Lisbon, an 
affordable city where sun, 
sand, gastronomy and 
architecture come together 
on the shores of the Atlantic, 
providing a healthy dose of 
inspiration to web creatives. 
With a small but emergent 
web community, the feeling 
that there is still plenty of 
room to grow serves as a 
constant motivation 


TV Tot only has the number of web agencies 
XN in Lisbon risen recently, the quality of 
their work has improved massively as well. 
Working out of sun-filled classical offices on 
narrow terraced streets, or one of the 
several recent co-working spaces, the stage 
for a vibrant web community Is set. 

Perhaps for these same reasons, a wide 
array of community-held events have been 
springing up lately. Lisbon currently holds 
some of the best LJX OJX Lx) and Design 
(Refresh LX) conferences in the International 
scene. Healthy Word Press and Drupal 
communities, and for the more technically 
minded, the first Lisbon JavaScript conference 
(LXJS) is held this year, integrated in the first 
Lisbon Digital Week. Also, for years now, the 
local Telco has organized Codebits, a massive 
yearly event that brings together over 800 
developers In a three-day 24-hour hack-a-thon. 

Mix In a strong entrepreneurial spirit 
backed by governmental programmes and 
inspiring events such as the SWITCH 
Conference, several TEDx and Ignite editions, 
and the stage is set for the spiralling effect that 
comes from the sharing of knowledge and 
quality work, 



















































































































9 SWAT 

www.weareswat.cQm 

With a group of specialist developers, each with their own 
specific ski I Iset SWAT is able to offer its clients a complete 
service. Their work showcases their prowess as pixel-jockies that 
can turn a client idea into reality, and push what is possible online 
to new heights. 

SWAT 







Massive 

www. itsm a ssive .com/en 

As an a ward-winning agency. 
Massive I eve re very digital tool 
currently available to develop its client 
briefs. At Massive the re is only one rule, 
and that is to break the rules. This enables 
it to push the envelope with the work It 
does for the brands in its extensive 
portfolio, which Includes some of the 
biggest brands in Europe. 



weareboq 

weareboQ.com/en 

Bold design and a strong typographic sensibility 
characterises the work of this studio that, since 
establishment in 2004, has gained a diverse portfolio of 
work. Whether designing for print or the digital space, clients can 
be confident that their relationship with we are boq will produce 
unique and Innovative design. 




V Wiz Interactive 

WWW.WIZ.pt 
Diverse Is the perfect word 
to describe the work that 
comes from Wiz Interactive. 
High-end, graphic-based, branded 
sites rub shoulders with bold 
illustration and motion graphics to 
create an eclectic range of work that 
Inspires others. The team at Wiz fully 
understand not only the design 
technology they use, but also how to 
powerfully apply their skills to each 
client brief. 



j±/ m & i 

i. j .si 






Lisbon predates 
other European cities 
such as London. Pans 
and even Rome by 
several hundred years 


A huge old printing factory that is now returned to the 
city. A creative island occupied by corporations and 
professionals that the industry serves, it also has 
stage for a diverse set of events related to fashion, 
publicity, design, architecture and music. 


Bruno Abrantes 
Web developer 

Fundagao Calouste Gulhenkian 


www.aulbenkian.Dt 


If you have a hunger for art and culture, you must visit 
Gulbenkian. Its sprawling corridors house regular 
exhibits from global artists, and its concert floor 
features an eclectic musical selection. The beautiful 
park that surrounds it is perfect for a weekend picnic. 



Be hi nd M N A A. there's a wood erf u I ga rden 
overlooking the Tagus; grab a book and bathe in the 
sun. surrounded by beautiful sculptures and trees. 
There's free Wi-R and a small self-service restaurant. 
The museum itself is free on Sundays before 2pm. 


trend map 


101 















































■web 

designer Subscriptions Voucher 


YES! I would like to subscribe to Web Designer 

Your details 

Titfe_First name_ 

Surna me_ 

Ad d ress._ 


Postcod e Co u ntry__ 

Telephone number,__ 

Mobile number__ 

Email address_ 

Please complete your email address to receive news and special offers 

Direct Debit Payment 

I UK Direct Debit payment 

F will receive my first three issues for just El, I will then pay only E25.15 every six issues thereafter. If, however, I da not 
laVe What 1 See, I car cancel at any time. 



YOUR EXCLUSIVE READER PRICE 1 YEAR (13 ISSUES) 

_ UK £62.30 (Save 20%) \T Europe £70 [T World £60 


Cheque 

I enclose a cheque for £_ 

(made payable to Imagine Publishing Ltd) 

Credit/Debit Card 

Visa [ MasterCard [ Amex I Maestro 

Card number Expiry date 

11111111111111111 11111 

Security number I I I (last three digits on the strip at the back of the card) 

Issue number I” I (if Maestro) 


Signed_ 

Date_ 

Code: PCG200 

r Tick this box if you do not wish to receive any promotional material from Imagine Publishing Ltd. 

FT Tick this box If you do not wish to rec&ve promotional material from other companies. 

Terms and conditions apply. We publish D issues a year. Your subscription will start from the next avaiable 
issue unless otherwise indicated. Qrect Debit-guarantee details available on request This offer expires 
without notice. 

I would like my subscription to start from Issue; I 1 I 

Return this order form to: 

Web Designer Subscriptions Department, 300 GuiHat Avenue, 

Kent Science Park, Sitting bourne, ME9 SGU, or email it to 

webdesigtter@servlce>ielpilnaco,ulc 



200" issue special 


SfiPtuI ftitTicttiac The king ol Q»5 kwAi 

Malt Mulleiiweg Erie Meyer 



“Flash is dead, 
so let’s build a 
better internet'* 

Patrick Van Kann, R/GA 


PLUS 

pro tutorials 
Soled Nblr 
Profile special 
Over 10 hours 
of video tutorials 



FANTASTIC 

SUBSCRIBER 

OFFER 

Subscribe today and 
get your first three 
issues for only £1 

!*• Pay only £4.19 for every future issue 
- a 30% saving on the store price 
» Free UK delivery to your door 

P* Never miss an issue 

* 

»* Money-back guarantee 


*Terrns & Conditions 

This offer entitles new U K direct debit su bscribers to receive thei r 
first three Issues for£1. After these issues,subscribers will then pay 
£25.15 eve ry six i ssu es. £ ubscri bers ca n canceI this su bsc ri ption 
at a ny time. New subscriptions wl llstart from the next availab le 
issue. Offer code FCG200 must be quoted to receive this special 
subscription price. Details of the direct debit guarantee areavaiiable 
on request Offer expires 30 November 2012. Imagine Publishing 
reserves the rig ht to lim it th is type of offer to one per household. 
Source code: PCG20O 
Web address: wwwjmaqine 5 ufa 5 .co.uk/wed 
Tel: 0644848 840 


Manage your subscription account online at www.imaqinesubs.CQ.uk 




















































ISSUES OF 

WEB DESIGNER 

FOR JUST 




Get your first 3 issues for 
just , then save 30% 
on the shop price 


THREE EASY WAYS TO SUBSCRIBE 


1. Online 

Order via credit or debit card, just visit 

www.imaginesubsxo.uk/wed 

and enter code PCG200 

2. Telephone 

Order by phone. Just call: 

08448488413 

Overseas: +44 (0) 1795 592 878 and quote code PCG2Q0 


3. Post or email 

Please complete the form and post it to: 

Web Designer Subscriptions, 

800 Guillat Avenue, 

Kent Science Park, 

Sittingbourne, ME9 8GU 

Alternatively, scan and email the form to: 

webdesigner@servicehelpline.co.uk 

















Ill association with 



0 * * ts Our web-hosting guide is brought to you in association with 

Fasthosts, the UK's leading reseller web-hosting provider 


* Unlimited websites 

• Unlimited bandwidth 
» Unlimited web space 


■ Use your own brand throughout 
»24/7 expert UK-based support 

■ No-risk trial - 3 months free 


I I-Iostiiig listings 


Whether you’re a hosting firm keen to promote your 
products or a happy customer who wants a favourite 
provider to be listed^ drop us a line with the details! 

\ webdesiq ner@imagine-publishinq.co.uk 


NAME AND URL 


Keep an eye on the latest packages and 

deals with our comprehensive list of service providers 



1&1 


1&1 Internet Ltd. 

www.landl.co.uk 


161 Starter (Linux) 

1&1 Standard (Linux) 
1&1 Standard (MS) 

1&1 Unlimited (LiriM) 
1&1 Unlfnlted ffllS) 
Iflrl Business (Linuxi 
l&l Business CMS) 


0844 3351211 E 2&88 5 GB Unlimited 1,000 / H S S / S S t 

G 844 33512 H ££988 50 GB Unlimited 3.000 S S S / S S / X 

0844 33512 H £71 .BB 50 GB Unlimited 3,000 / t S S S S S t 

0844 3351211 LB 3.88 Unlimited Unlimited 5,000 S S S S S S S t 

0844 33512 Tl E 107 B 8 UnSmited Unlimited 5,000 St S / S S S t 
0844 3351211 £ 119.88 Unlimited Unlimited Unlimited S S S S S S S t 

08443351211 £ 155.88 UnSmited Unlimited Unlimited S t S S S S S t 


111XA/ U.U * F 11MphHwl ram Urtteited WfebHosting Pack N/A 
I I W© PMOSlJj httDr//1 Tl weblio st.com starter Web Hosting Pack N/A 

Budget Web Hosting N/A 

Word Press Web Hasting Pack N/A 
DrupalWfeb Hosting Pack N/A 
Joomla! Web Hosting Pack N/A 
asCommerDS Web Hosing Pack N/A 
ZenCart Web Hosting Pack N/A 
PrestafihopWdbHosttigfeck N/A 


£60 Unlimited UnSmited UnSnifled 

£30 5 GB 2 GB 10 O 


£12 

£24 

£24 

£24 

£24 

£24 

£24 


1 GB 

5 GB 

5 GB 

5 GB 

5 GB 

5 GB 

5 GB 


1 GB 

2 GB 

2 GB 

2 GB 

2 GB 

2 GB 

2 GB 


5 

100 

100 

100 

100 

100 

100 


123-reg 

i23netj fwtfttUi-rpaflnnki 
123-reg fwwift.m-raftJO.uli> 
122-reg f www 1? 3-rpg eg . u k J 



Blackfoot Hasting Ltd 


BlackroQt Hosting Ltd towMarWnr i lrn iik > 
Blndkfnnl Hosting Lid (wwHfcblacIi f aQlg & M k . ) 
SHscKfoot Hosting Ltd twww.bt Mfcf oP t JC k uli ) 

Biaamignt tow tHarttninhr rnm? 

BiaJtnight tow.fflacKnlaht.com? 

Bttwu (btadtir.aMUia.LiKl 

SrnvnU rhllpffhriwnUrn nk> 

Bf nvn14 { hUPifjfbrTVoU.tP.uk> 

0ravo14 f bttPij'j'bravnn, 1 n,uK> 


□aiiv Internet tow,.dfllLy.C&lJKi 
□ally Internet [ wwtf.dallv.ca.uk3 
Daily Internet towflalttmilKl 
Qraily inlprnrt tow.do il y . qa u lU. 



Starter 

PftJS 

Pro 

Bui Pro 
Plus, (MS) 

Pro (WSJ 
8usPro(WS) 

Light Use* 
Everyday 
Bushess/Pro 
JAVA Tomcat 
ASP.NeI 

Branxe Package 
Sliver Package 
Cold Package 
11tanium Package 
Reseller Package 
Home 


Professional 
Minimus 
Medlus 
Maximus 
Starter Linux 
SI arl kt Wratows 
Bu^vkso. Linux 

flu aiKi Windows 

Ultimate Linux 

Ultimate Endows 

Entry 

Home 

Business 

flu mipss Plus 

Starter 

Home 

Business 


OEMS 059 0918 
OEMS 0590018 
0345 3590018 
0345 0590018 
0345 P59 0013 
0845 0590018 
0845 0550018 
08703212020 
0370 321 2020 
08703212020 
03703212020 
0370 221 2020 
03451fi6330ft 
0845 «S 8306 
08451668306 
OEMS 166 3506 
03451663536 
M/A 
M/A 
M/A 
N/A 

35359 918 3072 

55359 9133072 

55359 913 M72 

N/A 

N/A 

M/A 

M/A 

N/A 

N/A 

03/51662100 
0345166 2100 
0345166 2100 
03451362100 
0344272 9348 
0844972 9848 
03/4572 9318 


E29.38 100 5GB 20 

E59.B3 5GB 50GB 500 

£107J8B 1000 100GB 750 

£179,86 20GB Unlimited 1,000 

£59.03 2GB 35GB IDO 

£107.88 5GB SOGB 500 

£17988 10GB 150G& 1.000 

145 20MB 1GB 9 

£100 200M3 10GB 15 

E27S 500MB 20GB 50 

£500 IOOMB 3GB 15 

£275 UJOMS 2GB 15 

£10 10MB SOOMfl 2 

£64.99 20MB 2GB 10 

£79,99 SO MS 2GB 50 

£119.99 5O0MB 5GB 500 

£299.99 1GB 10GB 1,000 

£10 5Q0M8 5GB 5 

ISO 1GB 20GB 1QO 

£100 2GB 10GB 200 

£1M 3GB 60GB 300 

£45 10GB 200GB Unlimited 

E73 2DGB 10O&B Unlimited 

E/5 30GB 600GB Unlimited 

£130 2.000MB 2.000MB 10 

£2£J 2000MB 2000MB ID 

£45 4.000M3 4.000MS 4.000 

£45 4j000M3 4.000MA 4,000 

£60 Unlmiited Unlimited Unlimited 

£60 Unlmiited Unlmilted Unlimited 

EI9.2B 500MB 5GB 75 

£50.90 3GB 30GB 30 

£53.94 12GB I50G3 600 

£77.91 24GB 250GB Unlfcnilcd 

£30 3GB 2DGB 1,000 

£10 10GB 5K3B 10.000 

£60 Unlttnlted Unlimited Unlimited 


/ y 

y S 

J J 

J f 

S j 

y s 

s / 

/ / / 

/ / y 

y y y 

S J f 

y y J 

y y y 

/ s / 

/ / / 

y S J 

y y y 

y y 

/ y 

y y 

/ y 

s s s 

y / y 

y y y 

y y 

y J 

J J 

J J 

s / 

/ s 

v' J 

J J 

/ / 

J J 

J 

s 


y / 

S J 

J J 

J J 

J J 

s / 

/ V 

/ / 

/ / 

y j 

y j 

y y 

j y 

y y 

y y 

y y y 

y y y 

y y 

y y 

y y 

y / 

y / 

y y 

y y 

y y y 

y / / 

y y y 

y y y 

y / / 

y / y 

y j 

y y 

y y 

y y 

y y 

y y 

y j 


104 


hosting listings 















































In associ ation with 







Get your listing highlighted! Contact Richard 
O ridiardmst(5)imagine-pubIisIring.co.uk 
0 + 44 ( 0)1202586436 hosting listings 


Featured host of the month: Blackfoot Hosting www.blackfoot 


.co.uk 



Offering more reasons for choosing one of the listed providers 


NAME AND URL 


□nxignvrasp ft 
□igilal Gibhon Lid Ch[[o ; .'AfcDiLMpihbon.Dnml 
Digital Gibbon Ltd {hMp-.ffdH3ltaintbbon.c-om) 
Digital Gibbon Ltd ftutpiflcfcpltalplbbnn.mcn) 
Digital Gibbon lm flittrffflfniriUnlhhnn rnrrT' 



Oonhost [www.donboat.cayk) 
Oonhost fwww.itonhoat.rault') 
Donhoat fwwwhnnhmt rnulfl 
oonhost (www.donnosi.tauK? 
Dcnhoat fwwrfrtnfirwttrmilf) 

OnnhnsL Iwww.donhosI.rauk) 
tWMHnfl (www.ehosLing.cam) 
eHostlng (wwYr.Bhostlno.com) 
eHosting twiMK.iabn5UDfl.mniL) 
eHostlng tw«rcr.Bhcfitlnn£gni) 



Black; loot isan experienced UK-based web-hosting provider 
with a proven pedigree In offering hosting and domain name 
registration services since 1999. Specialising in Linux-based 
servers, housed across three London data centres, Blackfoot promises 
24/7 monitoring and a dedicated support team to guarantee uptime 


and first-dass delivery. Hosting options are available in five flavours 
ranging from the entry-level Home solution for £40 per year, up to 
the powerful eCommerce, Professional and Partner packages priced 
between £100-200. All come with access to the feature-packed cPanel 
control panel for intuitive maintenance. 


Glacom 1'bwrw,f]hrnni.L-rjni 



Window?, ummfled 
Windows Home 
dwsipHnxL 
PHrscwi.il 
Personal Plus 
Susineu 

Business Professional 

Bronze Linux 

Gold Linux 

Bronze Windows 

Gold Windows 

Reseller Unix 

Reseller Windows 

Enterprise 

Commerce 

Designer 

□nvelnper 

Elarler 

Personal 

expert 

Virtual 

Bronze 

Silver 

Gold 

PtaUnum 

Email Only 

Essential 

Superior 

Premium 

Starter 

Home 


eCofrimerce 
Business Pro 


0344372 9B48 
0344372 9B4S 
272 MM.dil. 
01965 509 990 
01865 SB9990 
01865 569 590 
01365 569 990 
0191 261 2252 
0191 261 2252 
0191 261 2252 
0191 261 2252 
08452265566 
08452265566 
0345 2265566 
0345 2265566 
0345 2265566 
0945 226 5566 
0944 9994100 
08445994100 
08449994100' 
08449994100 
0121 314 4365 
01213144365 
01213144365 
01212144965 
02390 249 R23 
02380249823 
02380 249 823 
02380 249 823 


HfA 

0800 S42 7500 


£43 

£108 

£132 

OO 

£100 

OO 

£100 

£39999 

£469.99 

£39.99 

£179.99 

£119.-99 

£259.99 

£23.99 

£50.88 

£95,83 

£227.80 

£30 

£42 

£72 

£114 

£40 

£75 

EHO 

£250 

EZ9.99 

£54.99 

£79.99 

£15999 

D99 


Unlmiited 

5GB 

Unlimited 

100MB 

500MB 

IQOMB 

500M3 

Unlmiited 

Unlmiited 

1GB 


1GB 
Z5GB 
5 GB 
50GB 
200MB 
400MB 
800MB 
1,200MB 
1GB 
2GB 
5GB 
10GB 
500MB 
2.5GB 
6.5GB 
30GB 
100MB 


IGl) 

5GB 

Unlimited 

Unlimited 

2GB 

5GB 

2GB 

5GB 

25GB 

Unlimited 

Unlimited 

Unlimited 

2GB 

5GB 

10GB 

40GB 

2GB 

5GB 

10GB 

25GB 

1GB 

30GB 

Unlimited 

Unlinitnri 

2GB 


Unlimited 

UnUnited 

250 

500 

250 

500 

10 

50 

250 

Unlimited 

ID 

20 

lOO 

200 



Personal Standard 

0844 583 0777 

£5180 

5GB 

Unlimited 

500 

y 

X 

y 

y 

y 

y 

y 

a 


Business Standard 

0844 583 0777 

£95.08 

75GB 

Unlimited 

1,000 

y 

Option 

y 

y 

y 

y 

y 

A 


Business Premium 

0644583 0777 

£173.88 

50GB 

Unlimited 

Unlimited 

y 

/ 

y 

y 

y 

y 

y 

A 

Fasthosts 

WDStarter Reseller 

0044583 0777 

£149-99 

20GB 

Unlimited 

Unlimited 

y 

Option 

Option 

y 

y 

y 

y 

A 

www r f35thQ5t5,cg r yK 

Advanced Reseller 

06445830777 

£199.99 

Unlimited 

Unlimited 

Unlimited 

y 

Option 

Option 

y 

y 

y 

y 

A 


HnnrL InLernel twww.hiar linlHrnet.cp.uk) 



Hostwey feiUtexJinstwavrritib) 
Hostwaiy (www.hpstwavc&uk) 
Hostwaiy {www.hestwav.oo.ykJ 


Hnstwny (www.hn5lwa.VJQ.uk) 



iCUk www.icukhostlncLcojJk 

KUKiimw.iBuiin«ting.muK 


Starter Professional 

0345 6447750 

£29.00 

2.5GB 

10GB 

1,000 




y 


y 

y 

y 

Home Professional 

0345 6447750 

£3999 

10GB 

50GB 

10,000 

y 

y 


y 


y 

y 

y 

Business Prolessinnnl 

0945 E44 7750 

£129.99 

UnlknitHd 

Unlimited 

UnEmlted 

J 

y 


y 


y 

y 

y 

Reseller Professional 

084S 6447750 

£269,99 

Unlmiited 

Unlimited 

LUWmlfed 

/ 

y 


y 


/ 

y 

y 

Silver 

08081801080 

£79.50 

150 MG 

3GB 

5 


Option 

y 

y 


/ 

y 


Gold 

08081801080 

£136.50 

300MB 

5GB 

ID 

y 

Option 

y 

y 

y 

/ 

y 


Gold Plus 

0303130 1830 

EIB9.50 

45DMB 

10GB 

30 

y 

Option 

y 

y 

y 

y 

y 


Platinum 

0303130 1830 

£359.50 

600MB 

2DGE 

50 

y 

Option 

y 

y 

y 

y 

y 


Platinum Plus 

0303130 1B30 

£599.50 

1.2GB 

40GB 

10 

y 

Option 

y 

y 

y 

y 

y 


Email Plus 

0909190 1090 

£4935 

50MB 

NM 

5 

WA 

N)A 

N.'A 

y 


/ 

y 


PrOlrsxInnnl 

0945 DM9175 

£20 

250MB 

1GB 

SO 

y 

y 

nplinn 

y 

y 

y 

y 


Advanced 

0845 DM 9175 

£50 

2GB 

2KB 

ISO 

/ 

y 

•option 

y 

y 

y 

y 


£nterpnse 

0845 0069175 

£00 

2GB 

MOMS 

Unlimited 

/ 

y 

option 

y 

y 

y 

y 


Professional Plus 

0345 DOS 9175 

£90 

500MB 

5GB 

IDO 

y 

y 

option 

/ 

y 

y 

y 


Premium Plus 

0345 OD9 9175 

£150 

1GB 

12.5GB 

500 

y 

y 

option 

y 

y 

y 

y 


Enterprise Plus 

0345 009 9175 

UOQ 

2GB 

20GB 

Unlimited 

y 

y 

option 

y 

y 

y 

y 



healing listings 


105 


























































Our web-hosting guide is brought to you in association with 
Fasthosts, the UK's leading reseller web-hosting provider 
•Unlimited websites * Use your own brand throughout 

* Unlimited bandwidth * 24/7 expert UK-based support 

• Unlimited web space * No risk trial - 3 months free 

I Hosting listings 

Keep an eye on the latest packages 

and deals with our comprehensive list of sen/ice providers 



Discover what an enhanced 
listing can do for your 
business. Contact Richard on: 

O + 44(0)1202 586436 

Continued... 


NAME AMD URL 


KUKw 
KUKu 

eu* wimliufflrallnara'iR 

JAB lweb Hosting toww lahwPhhrwNnn rrm'i 
JAB Web Hosting WwnJabwebhiratlnp.aM-i) 
JAB Web Hosting ( wtfajabaehh«Hnfl.iMsn) 

jab Hnsiing ftyff ff.jabwBlatimllnn rmnl 

lcn CmBHJciktQin) 

LCN ( www.lcn.cami 

ITN ftnawlrnfnrm 
LCN ftMwwJgnjoma 
LCN ( wwwJgn.jom.1 

LCN i' wujuj L-n rnm 1 ! 

iD Hnsl i <ht Ip:JVIlihfl5C5.Cn.uk> 

LD Hn (ht1pJ/lrihflgt5.m,ukl 
LD Hosts t nilDj'j 1 1d tlMtjL lOOI kJ 



Reseller Windows 

Reseller Linux 

Reseller Enterprise 

Wall - H105 

Home -H25 

Rfolesalonal- P55 

Readier - R25 

Reseller - R105 

Blog 

Starter 

Starter 

Dynamic 

Premium 

Unfimlled 

LD Budget (Linux) 

LO Home (Linux) 

ID Pro (Limix) 

LD Unlimited (Linux) 
Windows Home 


08450033175 
06450033175 
0845 0099175 
0600 0430153 
OSOOQ430153 
0800 0430152 
OftOO 0430152 
0*00 0430153 
014-3&J42 4 90 
0142B >12 190 
D142B >12 190 
01428 342 490 
D143B 342 490 
01436 342 490 
07691 235B5B 
07631235656 
07631 £35656 
07691 235B56 
07691 235S5B 



1QGB 

50GB 

Unlimited 

2GB 


50 

Unllrnled 

5DO 

5.000 

20.000 

Urtlntfled 

l r 000 


Ten.plkmrrp^meHi.lernple nelt 

Shrmtd- Server Pro 

+1310 B41 5500 

£64 

2GB 

tra 

1.000 

J 

y 

y 

/ 

y 

y 

y 

y 


Shansd-Serwer Advanced 

*1310 841 5500 

£109 

5GB 

1.5TB 

5,000 

J 

J 

y 

y 

y 

y 

j 

y 

NameHOG 

AlTorcttOio ifrtsrmrt So union* 

NameHOG www.namehoa.net 

EMAIL ONLY 

STARTER 

HOMEPRO 

BUSINESS 

01604212 904 

01604212 904 

01604212 904 

01604212 904 

£11.99 

£36.99 

£59.99 

£10999 

2.5GB 

10GB 

25GB 

Unlimited 

15GB 

150GB 

Unlimited 

Unlimited 

10 

Unlimited 

Unlimited 

Unlimited 

X 

X 

y 

y 

X 

X 

y 

y 

X 

y 

y 

y 

/ 

/ 

V' 

y 

/ 

J 

J 

/ 

/ 

y 

y 

/ 

y 

y 

y 

/ 

y 

y 

y 

Namescp (mviwxkariies.[icijufcl 

Startup-Pfcn 

0845363 3632 

ES3.9B 

500MB 

5GB 

10 

y 

y 

y 

y 

y 

y 

y 

y 

Namexcn (www-nam&ecLiifcl 

Busimas 

0*45362 3622 

£149.99 

2,000MB 

20GB 

100 



y 

y 

y 

y 

y 

y 


Business Pies 

QS4&J633G32 

£83.33 

3.000MB 

30GB 

200 

y 

/ 

/ 

/ 

y 

/ 

y 

y 


Designer 

08453633632 

E233 BB 

1GB 

20GB 

200 

y 

/ 

y 

/ 

y 

y 

y 

y 

Namesco (wwwjiamesjauuk) 

Designer Plus 

0845363 3632 

£4 79.85 

Unlimited 

30GB 

Unlimited 

y 

/ 

y 

y 

y 

y 

y 

y 

NETCSTSRfl 

DEVELOPER 

0600 0612SOI 

£32.09 

1GB 

Unlimited 

500 

/ 

/ 

y 

/ 

*4 

y 

/ 

/ 

ONE 

0800 0612SOI 

£109.99 

5GB 

Unlimited 

1000 

y 

y 

y 

y 

J 

y 

y 

y 

RESELLER 

0800 0612801 

£274.89 

Unlimited 

Unlimited 

1000 

y 

y 

y 

/ 

J 

y 

y 

y 

Neleetsera www.netceteraxo.uk 

VM500 Server 

0800 0612801 

£300 

20GB 

Unlimited 

Unlimited 

y 

y 

y 

y 

J 

y 

y 

y 


2200DC Server 

0800 0612&01 

£720 

160GB 

Unlimited 

Unlimited 

/ 

/ 

/ 

/ 

J 

y 

/ 

y 


3000DC Server 

0800 0612801 

£1,200 

2x500GB 

Unlimited 

Unlimited 

/ 

/ 

X 

/ 

J 

y 

y 

y 


26Q0QC Server 

0800 0612SOI 

E1.SOO 

2x500GB 

Unlimited 

Unlimited 

y 

/ 

*7 

/ 

y 

y 

y 

y 

Hetplan (WrtWrtglEfan.CP.UlO 

Shared 100 

02D7 KHMJ 424 

£60 

WOMB 

1GB 

5 

y 

y 


/ 

j 

y 

y 

y 



PurplePaw fmiwiiiRijriilFnfflriruiJ^ 
PurplePaw forrm.purolepflW.ia.uHj 
PrirplePew fo wdi pi itQle rw* rrmli.l 
py j piepjw (ivrtrijurpkiMrt.tja.uk) 
Recklex UK fwww.redde^ult.cnmi 
RefWex L. < f-.v.vw r : , .'l. |. ■>.. K .carri) 
Redttex I IK IWiv nprldpaiifc rnrnl 
ShymarNet (^^EHymarteLro.uU 
ShvmarNet fo™w.5 hymgr1re Ug,'l»l) 


VS'IOO 

V5200 

V530D 

Dedicated Servers 

Emae 

Play 

Plus 

Power 

R3 Reseller 

RhMiw DeiignSlrwLw 
RkHHkx Desi^i Eusineia 
Rwttax Design Premium 
Standard 1 
Standard 2 


0207 KHJO 424 

0207 WOO 424 

02071000 424 

02071000 424 

UiA 

M/A 

M/A 

M/A 

N/A 

0*43 269 4625 
0*43 269 4625 
0643 269 4625 
OSOO 321 7780 
0800 3217780 


£600 

£ 1,000 

£2,000 

£ 2 , 000 + 

ES 


£16 

£59.86 

£107.6B 

£43 

£63 


5GB 

10GB 

15GB 

73GB+ 

WOMB 

WOMB 

750MB 

2GB 

10GB 

1GB 

10GB 

100GB 

10MB 

20MB 


5GB 

10GB 

50GB 

1,50008 

1GB 

1GB 

5GB 

10GB 

50GB 

Unlimited 

Unlimiled 

Unlimited 

2GB 

2GB 


/ / 

J / 


100 

Unlimited 


100 

Unlimited 


106 


liraLing listings 




















































In associ ation with 



Get your listing highlighted! Contact Richard 
O ricIiardmst(5)imagine-pubIisIring.co.uk 
O + 44 ( 0)1202586436 hosting listings 


... 

I 


Can you 
recommend 
your host? 

Tweet us today with your 
hosting comments and advice 

@WebDesignerMag 


NAME AND URL 


5k ymartiet tvirtW li rf ni.fi tkrf milk"' 

SIR AT0 Hosting ( wwi-tr^g hosting 
STRATO Hosting {*^^9 lit) 

S7RAT0 H curing (ywj »> ^lr.it,n^U.nqcn uk } 
57RATQ Hosting ww.v.s.lrato-fe.i,liimcD.uk l 



swish Hosting tww.wja.mnsrino rmiy 



Twenty HtAi (rtwivlw airly tiflaLcau It? 


VARiHOST 

VARJHQST 


Weis Fusion twww.rtatrfuslon.ca.ulO 
WetiFuslon twww.rtetrfu5lon.cauk) 

Wet. Wl* CwaajKetHtkmiili) 

Web ■VIjt fwww.we hwJr.cn.uk) 

Wet- WU ijmw.rtyhwii.Da.ukl 





Premium! 

Premium 2 
STRATO flasIcWeb 
STRATO PowfifWeb 
STRATO ArivnncrdWnh 
5TRAT0 Enterprise Web 
1 rial 13 mandhl 
Starter 
Personal 
Plus 

MullulU? 

Email 


0300221 7733 
0300 321 7733 
0080080070070 
0000080070070 
00900SO07Q07O 
00300S0O7007Q 
034-1 9411000 
0344 9411000 
08449411000 
09449411000 
09449411000 
08445676971 


£41.88 

E71.9S 

£.137.83 


Swish Hosting (wwwjwlahhoatlraetyuk) 

Windows Hasling 

0344567 6-971 

£66 


Unlimited 

Unlimited 

■/ 

y 

y 

y 

y 

y 

y 

y 


Linux Hast Ins 

0344 5 67 6971 

£66 


Unlimited 

Unlimited 

■f 

y 

y 

y 

y 

y 

y 

y 

Swish Hosting (wwwswlshhostlnci.cauk) 

aCommerce 

08445 87 69 71 

£90 


Unlimited 

Unlimited 

/ 

y 

/ 

y 

y 

y 

y 

y 


SiteBuilder 

08445676971 

£12 


Unlimited 

Unlimited 

/ 

y 

y 

y 

y 

y 

y 

y 

Switch Media fwww.swiLchmwfcn cntnl 

Sivi Ich Si rmclnrcl 

0151236 9111 

£159 

1GB 

50GB 

500 

J 




y 

/ 



Switch Media hvww.swit-ehnwtj. 

Swiich Business 

0151236 9111 

£249 

10GB 

150GB 

1500 

J 




y 

y 

y 


Switch Media Cwww.switrhirtfeJia.cflfn) 

Business Pro 

0151236 9111 

£348.96 

20GB 

300GB 

5000 

y 




y 

y 

y 


ukhiyiielhMHimimiii 

Parking 

0370 765 6364 

E52.B3 

Z5MB 

500MB 

15 

y 

y 

y 

y 

y 

y 

y 



Forwarding 

0870 7656364 

Fran £i5 

NfA 

500M& 

MM 



y 

y 

y 

y 

y 



H curing 

0870 765 6J64 

From £750 

NM 

NM 

NM 




y 

y 

y 

y 


Tidy Web Hnstlnq (www.LldVwiebhcHtina.ooi.uk) 

Entry 

0844 9A4 9100- 

£25 

100MB 

1GB 

Unlinked 

y 

y 

y 

y 

y 

y 

y 


Tidy Web Hasting (www.tldvmebl'iMtinQ.CAUk) 

Home 

03443849100 

£50 

500MB 

5GB 

Unlimited 

y 

y 

y 

y 

y 

y 

y 


lldy web Hosting (www.tldyrtetrfiMtlng.oauK) 

HomePro 

0344 384 9100 

£100 

1GB 

10GB 

Unlinked 

/ 

y 

y 

/ 

y 

y 

y 


lldy Web Hasting (www.tldvrtetrfiMtlna.oauk) 

Business 

0344 384 9100 

£150 

2GB 

2GGB 

Unlinked 

/ 

y 

y 

y 

y 

y 

y 


Tidy Web Hosting (www.tldviivebhMtina.co.uk) 

Busmessfro 

0844 8849w» 

£250 

5GB 

50GB 

Unlwiited 

/ 

y 

y 

y 

y 

y 

y 


TwentyHoit fwwwtwPHlvhnsLrmilri 

tesIrfS 

0845 6410776 

£24 

100MB 

1.S&0MB 

25 

/ 

y 

y 

y 

y 

y 

y 

/ 


SlnndardSS 

0945 641 0776 

£45 

20DM9 

3.QDOMB 

50 

/ 

y 

y 

y 

y 

y 

y 

y 


Busiftess55 
Advanced5S 
WordPress Basic 
WordPress Plus 
WordPress Extra 
Fusinn Prnlessinnnl 
Fusion Business 
FUslon Developer 
Fusion Reseller 
Windows Starter 
Windows Professional 
Windows SLarter RmkHiy 


0345 641 0776 
0345 641 0776 
02031447057 
02081447057 
02081447057 
09451301302 
03451301602 
03451301602 
03451301602 
08443561450 
0844 3561450 
0944 3581450 


£70 

£110 

£4788 

£71,68 

£119.60 

£107.40 

£179.40 

£22740 

£329.99 

£69.95 

£149.95 

£199.95 


500MB 

UOOOMB 

2GB 

4&B 

unlimited 

5GB 

10GB 

20GB 


7,500MB 
15,000MB 
10GB 
100GB 
Unlimited 
50GB 
150GB 
3000 3 


Unlimited Unlimited 


1GB 

4GB 

5GB 


25GB 

100GB 

25GB 


IOO 

200 

IO 

KK) 

Uniamted 

1.000 

1.5QQ 

5.000 

Unlimited 

too 

5M 

500 


Zen Internet www.zen.cayk 


Bronzie (Linux) 

0345 050 9000 

£4708 

2GB 

20GB 



/ 

/ 


/ 

J 

/ 

X 

Sliver (Linux) 

0045 050 9000 

£95.88 

5GB 

50GB 

25 


S 

/ 

s 

/ 

/ 


X 

Gold (Linux) 

0845 058 9000 

£143.80 

10GB 

100GB 

50 


/ 

/ 

/ 

/ 

/ 


X 

Platinum (Linux) 

0845 058 9000 

E239JJ0 

50GB 

250GB 

100 

•f 

s 

/ 

J 


/ 


X 

Reseller (Linux) 

0845 058 9000 

£479tfifl 

150GB 

500GB 

250 

-f 

/ 

/ 

/ 

/ 

/ 

/ 

X 

Designer (Windows) 

0045 050 9000 

£59.00. 

2GB 

20GB 


J 

X 

X 

/ 

/ 

/ 


X 

Developer (Windows) 

0045 050 9000 

£170100 

10GB 

100GB 


/ 

X 

X 

✓ 


J 


X 


Golden rules to top hosting We identify and explain the key criteria for success... 


The best 

resources for you 

Selecting yuur ideal packages largely 
determined by the kinds of resources and quantity 
of features you require fncrti your hosting solution. 
Key criteria like web space 3*id monthly bandwidth 
important for those Services likely to be 
subjected to heavy amounts of traffic, which is 
why package solutions far enterprise applications 
aetypleay miicfi mure expensive. The general 
rule of thumb is not to buy more than you need or 
underestimate potential requirements.. 


Competitive 
and reliable 

The hosting market is big business and 
hosting providers do try to drive prices down 
in a bid to entice your custom. Use our chart bo 
compare costs, but be sure to visit the vendor 
websites to teep track of the latest deals, as 
they change. Remember that low price should 
not always be a deciding factor and that paying 
a premium for a more reiable, trusted and 
experienced vendor can offer you much better 
value fcr money in the long term. 


Putting you 
in control 

Modern hosting is all about giving 
customers the power to set up. monitor and 


Fantastic 
customer support 

If all else fails and you need some 
extra help to get your hosting track online, then 
a commitment to future customer support is key. 
Many vendors orfer a service-level agreement 
which outline* what you can expect here, however 
moat wil be more explicit about whether phone 
support is included or email contact is preferred. 
Think abdut what you need for peace of mind and 
factor good, comprehensive technical support 
against the price. 


maintain their web space with minimal fuss. Most 
commercial vendors crfer access to award-winning 
and intuitive control panels that enable you to log 
in remotely and intuitively tweak your account, 
without the need to relay complicated instructions 
down the phone. Be sure to find out from your 
potential host as much as you can about the 
control panel and request a demo. 






hosting listings 


107 

























































OFF® 

USA 




Subscribe now and get 

f 7 ISSUES FREE* 


The only magazine you need to design and develop stunning websites 



TERMS & CONDITIONS 

*This is a l JS subscription offer; please dont forget to quote USA5 
when ordering. You will actually be charged £60 sterling for an annual 
subscription. This is equivalent to $94 at the time of writing. although 1 
the exchange rate may vary. Seven free issues refers to the newsstand 
price of $14.99 for 13 issues totalling $194.87 compared with $94 for a 
subscription. Your subscription will start from the next available issue. 
Latest offer is based on newsstand; price of $14.99 per issue com pared 
with $723through this offer 
This offer expi res 31 Octobe r 2012* 


Subscribe now 

«' Online 

Order by visiting: 

www.imaginesubs.co.uk/wed 

and enter USA5 to get this exclusive offer! 

Telephone 

Order by phone, just call: 

592878 

and quote USAS 






m eb designer 


Classified Advertising 


01202 586419 




today, tomorrow and the future For help and advice call free on 0800 6520 444 


WEB HOSTING ■ DOMAINS ■ EMAIL ■ DEDICATED SERVERS ■ VIRTUAL SERVERS • RESELLER HOSTING 


fastHosts 


fasthosts.co.uk 

or call 0800 6520 444 0 f IS 



Making business work better online 









in b \ designer 


Classified Advertising 


PostcodeAnywhere 

The easiest way to add features to your website* 

UK & International addressing | Address cleansing 
Payment validation | Customer profiling 
Store finder 


To find out more; 

Call; 0800 047 0495 

ww w- po stood earay where, co m 



To Advertise In 



Contact Nick On 
01202 586419 

nick.marrow@imagine-publishing.co.uk 


trade secret 

noun {c} -tred si kriht - A secret formula, method, or device that gives one an advantage over competitors. 

Low cost address lookup for your website 



Buy online from £15 + vax 
Eliminate spell i ng m istakes 
Reduced abandoned carts 


30% reduct io n of keyst rokes entering add resses 
Create a professional image for your clients 
Simple integration with SDK & working exa mples 


For more details visit postcode-softwa re .net or call 084583 82 666 




WEB HOSTING 

fatmvtsiami 


TIB^webhosting. 

designers prefer it 


1. Personal Support 

2. Fully Managed Plans 

3. Superior Servers 

4. Professional Features 

5. Unlimited Addons 


FROM 


J P Vear 

equivalent to 



P Month 


Tidy Web Hosting is a trading name of Foldings Unmlted 

Registered in England & Wales (5935455). All prices subject to VAT. Call; 0344 884 9100 














Classified Advertising 


01202 586419 


Read anything 
good lately? 


Shop for quality magazines, 
books and DVDs from 
Imagine Publishing 



imagineshop.co.uk i 


MAGAZINES BOOKS OVDS DOWNLOADS GIFTS 




GO» 

COMPILA 


« clikpic » 

Websites made easy 


0 


Clikpic is an easy-touse service 
for people who want a website 
without the cost and hassle of 
setting one up. 

With minimal technical expertise 
required, you can use our online 
admin system and a wide 
choice of template designs to 
create and edit your own web 
site quickly, easily and very 
cost-effectively. 

* Update or change your site whenever 
you want and as often as you like. 

* Have as many pages as you like. 

* Dozens of style features and options 
to customise your site and give it 
your own -fool and look. 

* Take order$ online. 

* Opt to have your own domain name. 

Many additional features recently 
added with many more to oome 



UK web solutions diret 


Established 2001 



Premium Web Hosting 

Our hosting plans come tuith the following features as standard: 

* cPanef control panel 

# FREE Web applications 

* SPAM /Virus protection for email 

• Daily backups - multiple restore points 

Utilising CloudLinux for rock solid stability and high performance, 
your mebsite is in safe hands with us. 

from £3*99 per month 


a:\ 


. * 


Web Hosting Reseller plans VPS Managed Servers 

littp://u kwebsolutionsdirect.co.uk 


Visit 























gr&at4gjtalinag£ - The official download website of imagine PubUi 


Magazines 


| J /iPad /iPhone /Android phone / Android tablet /Apple Mac / Windows PC 


3&0 Magazine 


30 Artist 


eBooks Apps 























No Disc. No Problem 

Many of the files you’re looking for can be 
found on the magazine’s website 

Imagine digital editions to get the most out of yoU r digital 

0 0 editions, be sure to enjoy all of our 

are a new and exciting fantastic features, including: 

way to experience our ‘ Zoomable text and P ictures 
world-leading magazines ! 

and bookazines. • Take your collection with you 



To buy more Imagine digital editions and for the 
latest issues and best offers, please go to 


www.GreatDigita I Mags.com 
























mm 3 

Vimeo 


Logo 

The Vimeo logo in 2007 
is the same as is in place 
today. Although it is no 
more than a selected 
font, it demonstrates the 
power behind a logo as 
part of a brand. 


vimeo 

Everyone oan upload 230nnb of video every week. Free. 



Vmrao is ft free and easy service for sharing your videos -mr. fnenas rind family or 
people you meet here Join Vrmee now end share your first video today. 



Header 

The header is simple and 
straight to the point. The 
colour Ls calming and 
engaging. A big logo 
ensures that visitors 
know where they are and 
a couple of salient 
messages get the core 
principles across. 



Three columns 

Another new look for 2007 saw a 
switch to three columns, This 
aflowed more Information to be 
presented on screen, and a 
more personal experience. 



Vimeo 


www.vimeo.com 


The video sharing site has stuck to its core principles of providing a 
venue for filmmakers of all levels, to become the hit it is today 


Founded back in 2004, Vimeo is a videosharirg 
website that gets its name from a play on the 
phrase J video me'. Users can upload, share and 
view videos, with a focus on user-made content. 

At the beginning of its lifecycle, Vimeo was a 
very basic site that was little more than a point to 
upload videos. It very quickly developed into a 


more coherent and cohesive experience, allowing 
users to share videos and interact with other 
users. The design was simple two-column stuff 
with a colour palette that made it inviting, It has 
slowly evolved since the early days, and now has a 
contemporary design, over 8 million registered 
users and 65 million visits a month. 


i I The design style was simple two 
column stuff with a colour palette that 
made it friendly and inviting ill 



114 


_style relic 













































myvpsksufferingagain, 

WHAT AM I GOING TO DO? 


A123-REGVPS 


^ from just £14.99 4 

PER MONTH? 

THAT'S JUST THE TICKET 

s HOORAH! 


WITH A VPS FROM 123-REG YOU CAN SCALE UP AND DOWN AS N^DED, 

SO WHEN YOUR SITES NEED EXTRA OOMPH IT S JUST A FEW CLICKS AWAY. SPLENDID. 

• NOW WITH PARALLELS PLESK11 CONTROL PANEL 

• SPECIAL OFFER! FREE 100 DOMAIN PLESK LICENCE 

• UK-BASED DATA CENTRE AND SUPPORT 


1-12 CORE PROCESSORS vCPU, 
1GB-12GB MEMORY RAM 
50GB-300GB STORAGE iHDDi 




FIND OUT MORE ABOUT OUR VPS AT WWW.123-REG.CO.UKI VPS 

PRICE EXCLUDES VAT. TERMS & CONDITIONS APPLY. 


1 2 3 -reg 




co.uk 





RESELL 

Cloud Backup 
with unlimited storage 
to all of your customers 


For just £39.95 a month for UNLIMITED customers 

30 day money back | White label everything | Instant online setup 


H\sedri\se 

www.livedrive.com/resellers 



Questions? Call 020 3137 6446 


t Offer valid for 3 months from publication date. Discount will be applied to all costs at checkout {set up fee, branding fees, annual fee and/or first month fee).